Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 184146
b: refs/heads/master
c: 10a1993
h: refs/heads/master
v: v3
  • Loading branch information
Simon Arlott authored and Patrick McHardy committed Feb 2, 2010
1 parent a33bae8 commit b89228e
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 11 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: c30f540b63047437ffa894b5353216410c480d1a
refs/heads/master: 10a199394b8f9b4c4e0be6e14a61109a7d891b1b
18 changes: 8 additions & 10 deletions trunk/net/netfilter/xt_TCPMSS.c
Original file line number Diff line number Diff line change
Expand Up @@ -60,17 +60,9 @@ tcpmss_mangle_packet(struct sk_buff *skb,
tcplen = skb->len - tcphoff;
tcph = (struct tcphdr *)(skb_network_header(skb) + tcphoff);

/* Since it passed flags test in tcp match, we know it is is
not a fragment, and has data >= tcp header length. SYN
packets should not contain data: if they did, then we risk
running over MTU, sending Frag Needed and breaking things
badly. --RR */
if (tcplen != tcph->doff*4) {
if (net_ratelimit())
printk(KERN_ERR "xt_TCPMSS: bad length (%u bytes)\n",
skb->len);
/* Header cannot be larger than the packet */
if (tcplen < tcph->doff*4)
return -1;
}

if (info->mss == XT_TCPMSS_CLAMP_PMTU) {
if (dst_mtu(skb_dst(skb)) <= minlen) {
Expand Down Expand Up @@ -115,6 +107,12 @@ tcpmss_mangle_packet(struct sk_buff *skb,
}
}

/* There is data after the header so the option can't be added
without moving it, and doing so may make the SYN packet
itself too large. Accept the packet unmodified instead. */
if (tcplen > tcph->doff*4)
return 0;

/*
* MSS Option not found ?! add it..
*/
Expand Down

0 comments on commit b89228e

Please sign in to comment.