The branch main has been updated by tuexen:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=70e95f0b6917a8b8cd4a2a5f883f3e9753fc86d8

commit 70e95f0b6917a8b8cd4a2a5f883f3e9753fc86d8
Author:     Michael Tuexen <[email protected]>
AuthorDate: 2021-02-27 22:27:30 +0000
Commit:     Michael Tuexen <[email protected]>
CommitDate: 2021-02-27 22:27:30 +0000

    sctp: avoid integer overflow when starting the HB timer
    
    MFC after:      3 days
    Reported by:    [email protected]
---
 sys/netinet/sctputil.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/sys/netinet/sctputil.c b/sys/netinet/sctputil.c
index 319344842d5f..7ddb4c3710df 100644
--- a/sys/netinet/sctputil.c
+++ b/sys/netinet/sctputil.c
@@ -2277,14 +2277,19 @@ sctp_timer_start(int t_type, struct sctp_inpcb *inp, 
struct sctp_tcb *stcb,
                }
                rndval = sctp_select_initial_TSN(&inp->sctp_ep);
                jitter = rndval % to_ticks;
-               if (jitter >= (to_ticks >> 1)) {
-                       to_ticks = to_ticks + (jitter - (to_ticks >> 1));
+               to_ticks >>= 1;
+               if (jitter < (UINT32_MAX - to_ticks)) {
+                       to_ticks += jitter;
                } else {
-                       to_ticks = to_ticks - jitter;
+                       to_ticks = UINT32_MAX;
                }
                if (!(net->dest_state & SCTP_ADDR_UNCONFIRMED) &&
                    !(net->dest_state & SCTP_ADDR_PF)) {
-                       to_ticks += net->heart_beat_delay;
+                       if (net->heart_beat_delay < (UINT32_MAX - to_ticks)) {
+                               to_ticks += net->heart_beat_delay;
+                       } else {
+                               to_ticks = UINT32_MAX;
+                       }
                }
                /*
                 * Now we must convert the to_ticks that are now in ms to
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/dev-commits-src-main
To unsubscribe, send any mail to "[email protected]"

Reply via email to