summaryrefslogtreecommitdiff
path: root/net/asterisk/files/patch-AST-2016-002
diff options
context:
space:
mode:
Diffstat (limited to 'net/asterisk/files/patch-AST-2016-002')
-rw-r--r--net/asterisk/files/patch-AST-2016-00218
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;