[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <200808261656.m7QGuR5k029805@mailhub.lss.emc.com>
Date: Tue, 26 Aug 2008 12:56:27 -0400 (EDT)
From: love_phil@....com
To: netdev@...r.kernel.org
Subject: [PATCH] tcp: fix tcp header size miscalculation when window scale is unused (resend)
tcp: fix tcp header size miscalculation when window scale is unused
The size of the TCP header is miscalculated when the window scale ends up being 0. Additionally, this can be induced by sending a SYN to a passive open port with a window scale option with value 0.
Signed-off-by: Philip Love <love_phil@....com>
--- a/net/ipv4/tcp_output.c 2008-08-24 07:44:18.000000000 -0700
+++ b/net/ipv4/tcp_output.c 2008-08-24 07:43:05.000000000 -0700
@@ -468,7 +468,8 @@ static unsigned tcp_syn_options(struct s
}
if (likely(sysctl_tcp_window_scaling)) {
opts->ws = tp->rx_opt.rcv_wscale;
- size += TCPOLEN_WSCALE_ALIGNED;
+ if(likely(opts->ws))
+ size += TCPOLEN_WSCALE_ALIGNED;
}
if (likely(sysctl_tcp_sack)) {
opts->options |= OPTION_SACK_ADVERTISE;
@@ -509,7 +510,8 @@ static unsigned tcp_synack_options(struc
if (likely(ireq->wscale_ok)) {
opts->ws = ireq->rcv_wscale;
- size += TCPOLEN_WSCALE_ALIGNED;
+ if(likely(opts->ws))
+ size += TCPOLEN_WSCALE_ALIGNED;
}
if (likely(doing_ts)) {
opts->options |= OPTION_TS;
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists