aboutsummaryrefslogtreecommitdiff
path: root/sys/netinet/tcp_sack.c
diff options
context:
space:
mode:
authorMichael Tuexen <tuexen@FreeBSD.org>2019-09-16 08:18:05 +0000
committerMichael Tuexen <tuexen@FreeBSD.org>2019-09-16 08:18:05 +0000
commit5b66b7f11b9257c8c60819867877b46b1af0aff2 (patch)
tree606a9775ebaa8df13e6d261194e1c18a6c7f9833 /sys/netinet/tcp_sack.c
parentf370355791012d22908c38f75872393b9074605a (diff)
Don't write to memory outside of the allocated array for SACK blocks.
Obtained from: rrs@ MFC after: 3 days Sponsored by: Netflix, Inc.
Notes
Notes: svn path=/head/; revision=352386
Diffstat (limited to 'sys/netinet/tcp_sack.c')
-rw-r--r--sys/netinet/tcp_sack.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/netinet/tcp_sack.c b/sys/netinet/tcp_sack.c
index 999fb4f5890b..311a84b989a9 100644
--- a/sys/netinet/tcp_sack.c
+++ b/sys/netinet/tcp_sack.c
@@ -235,7 +235,7 @@ tcp_update_dsack_list(struct tcpcb *tp, tcp_seq rcv_start, tcp_seq rcv_end)
saved_blks[n].start = mid_blk.start;
saved_blks[n++].end = mid_blk.end;
}
- for (j = 0; (j < tp->rcv_numsacks) && (j < MAX_SACK_BLKS-1); j++) {
+ for (j = 0; (j < tp->rcv_numsacks) && (n < MAX_SACK_BLKS); j++) {
if (((SEQ_LT(tp->sackblks[j].end, mid_blk.start) ||
SEQ_GT(tp->sackblks[j].start, mid_blk.end)) &&
(SEQ_GT(tp->sackblks[j].start, tp->rcv_nxt))))