PERFORCE change 139160 for review
Andre Oppermann
andre at FreeBSD.org
Tue Apr 1 13:35:14 PDT 2008
http://perforce.freebsd.org/chv.cgi?CH=139160
Change 139160 by andre at andre_flirtbox on 2008/04/01 20:34:28
The order of the TCP options was changed and some assumptions of
tcp_addoptions() no longer hold true. Add a test for all options
preventing overflows.
Affected files ...
.. //depot/projects/tcp_reass/netinet/tcp.h#4 edit
.. //depot/projects/tcp_reass/netinet/tcp_output.c#5 edit
.. //depot/projects/tcp_reass/netinet/tcp_var.h#10 edit
Differences ...
==== //depot/projects/tcp_reass/netinet/tcp.h#4 (text+ko) ====
==== //depot/projects/tcp_reass/netinet/tcp_output.c#5 (text+ko) ====
@@ -1279,12 +1279,16 @@
for (mask = 1; mask < TOF_MAXOPT; mask <<= 1) {
if ((to->to_flags & mask) != mask)
continue;
+ if (optlen == TCP_MAXOLEN)
+ break;
switch (to->to_flags & mask) {
case TOF_MSS:
while (optlen % 4) {
optlen += TCPOLEN_NOP;
*optp++ = TCPOPT_NOP;
}
+ if (TCP_MAXOLEN - optlen < TCPOLEN_MAXSEG)
+ continue;
optlen += TCPOLEN_MAXSEG;
*optp++ = TCPOPT_MAXSEG;
*optp++ = TCPOLEN_MAXSEG;
@@ -1297,6 +1301,8 @@
optlen += TCPOLEN_NOP;
*optp++ = TCPOPT_NOP;
}
+ if (TCP_MAXOLEN - optlen < TCPOLEN_WINDOW)
+ continue;
optlen += TCPOLEN_WINDOW;
*optp++ = TCPOPT_WINDOW;
*optp++ = TCPOLEN_WINDOW;
@@ -1307,6 +1313,8 @@
optlen += TCPOLEN_NOP;
*optp++ = TCPOPT_NOP;
}
+ if (TCP_MAXOLEN - optlen < TCPOLEN_SACK_PERMITTED)
+ continue;
optlen += TCPOLEN_SACK_PERMITTED;
*optp++ = TCPOPT_SACK_PERMITTED;
*optp++ = TCPOLEN_SACK_PERMITTED;
@@ -1316,6 +1324,8 @@
optlen += TCPOLEN_NOP;
*optp++ = TCPOPT_NOP;
}
+ if (TCP_MAXOLEN - optlen < TCPOLEN_TIMESTAMP)
+ continue;
optlen += TCPOLEN_TIMESTAMP;
*optp++ = TCPOPT_TIMESTAMP;
*optp++ = TCPOLEN_TIMESTAMP;
@@ -1352,7 +1362,7 @@
optlen += TCPOLEN_NOP;
*optp++ = TCPOPT_NOP;
}
- if (TCP_MAXOLEN - optlen < 2 + TCPOLEN_SACK)
+ if (TCP_MAXOLEN - optlen < TCPOLEN_SACKHDR + TCPOLEN_SACK)
continue;
optlen += TCPOLEN_SACKHDR;
*optp++ = TCPOPT_SACK;
==== //depot/projects/tcp_reass/netinet/tcp_var.h#10 (text+ko) ====
More information about the p4-projects
mailing list