Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 2 Mar 2021 12:56:39 GMT
From:      Michael Tuexen <tuexen@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
Subject:   git: f7c20120c19b - stable/13 - sctp: avoid integer overflow when starting the HB timer
Message-ID:  <202103021256.122Cudnr052140@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch stable/13 has been updated by tuexen:

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

commit f7c20120c19b6307536908a7f779be2832b133f3
Author:     Michael Tuexen <tuexen@FreeBSD.org>
AuthorDate: 2021-02-27 22:27:30 +0000
Commit:     Michael Tuexen <tuexen@FreeBSD.org>
CommitDate: 2021-03-02 12:33:01 +0000

    sctp: avoid integer overflow when starting the HB timer
    
    MFC after:      3 days
    Reported by:    syzbot+14b9d7c3c64208fae62f@syzkaller.appspotmail.com
    
    (cherry picked from commit 70e95f0b6917a8b8cd4a2a5f883f3e9753fc86d8)
---
 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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202103021256.122Cudnr052140>