diff options
Diffstat (limited to 'net/asterisk/files/patch-AST-2016-002')
| -rw-r--r-- | net/asterisk/files/patch-AST-2016-002 | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/net/asterisk/files/patch-AST-2016-002 b/net/asterisk/files/patch-AST-2016-002 new file mode 100644 index 000000000000..75ca85aeacf8 --- /dev/null +++ b/net/asterisk/files/patch-AST-2016-002 @@ -0,0 +1,18 @@ +diff --git a/channels/chan_sip.c b/channels/chan_sip.c +index 5de304a..277eec7 100644 +--- channels/chan_sip.c ++++ channels/chan_sip.c +@@ -3771,6 +3771,13 @@ static int retrans_pkt(const void *data) + } + + /* For non-invites, a maximum of 4 secs */ ++ if (INT_MAX / pkt->timer_a < pkt->timer_t1) { ++ /* ++ * Uh Oh, we will have an integer overflow. ++ * Recalculate previous timeout time instead. ++ */ ++ pkt->timer_a = pkt->timer_a / 2; ++ } + siptimer_a = pkt->timer_t1 * pkt->timer_a; /* Double each time */ + if (pkt->method != SIP_INVITE && siptimer_a > 4000) { + siptimer_a = 4000; |
