diff options
author | Thomas Graf <tgraf@suug.ch> | 2007-12-10 19:53:05 -0500 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-12-11 05:45:26 -0500 |
commit | 2017a72c070033830b460d31cd4703f9d2ec0d56 (patch) | |
tree | 1f9b9cace02c54739fbc36430bd685ee4d0806fe /net/ipv4/esp4.c | |
parent | a4e65d36a959005f14142535b58c44cd0f1de8cb (diff) |
[IPv4] ESP: Discard dummy packets introduced in rfc4303
RFC4303 introduces dummy packets with a nexthdr value of 59
to implement traffic confidentiality. Such packets need to
be dropped silently and the payload may not be attempted to
be parsed as it consists of random chunk.
Signed-off-by: Thomas Graf <tgraf@suug.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/esp4.c')
-rw-r--r-- | net/ipv4/esp4.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/net/ipv4/esp4.c b/net/ipv4/esp4.c index c31bccb9b526..1738113268bc 100644 --- a/net/ipv4/esp4.c +++ b/net/ipv4/esp4.c | |||
@@ -9,6 +9,7 @@ | |||
9 | #include <linux/pfkeyv2.h> | 9 | #include <linux/pfkeyv2.h> |
10 | #include <linux/random.h> | 10 | #include <linux/random.h> |
11 | #include <linux/spinlock.h> | 11 | #include <linux/spinlock.h> |
12 | #include <linux/in6.h> | ||
12 | #include <net/icmp.h> | 13 | #include <net/icmp.h> |
13 | #include <net/protocol.h> | 14 | #include <net/protocol.h> |
14 | #include <net/udp.h> | 15 | #include <net/udp.h> |
@@ -224,6 +225,10 @@ static int esp_input(struct xfrm_state *x, struct sk_buff *skb) | |||
224 | 225 | ||
225 | /* ... check padding bits here. Silly. :-) */ | 226 | /* ... check padding bits here. Silly. :-) */ |
226 | 227 | ||
228 | /* RFC4303: Drop dummy packets without any error */ | ||
229 | if (nexthdr[1] == IPPROTO_NONE) | ||
230 | goto out; | ||
231 | |||
227 | iph = ip_hdr(skb); | 232 | iph = ip_hdr(skb); |
228 | ihl = iph->ihl * 4; | 233 | ihl = iph->ihl * 4; |
229 | 234 | ||