aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorThomas Graf <tgraf@suug.ch>2007-12-10 19:53:05 -0500
committerDavid S. Miller <davem@sunset.davemloft.net>2007-12-11 05:45:26 -0500
commit2017a72c070033830b460d31cd4703f9d2ec0d56 (patch)
tree1f9b9cace02c54739fbc36430bd685ee4d0806fe /net
parenta4e65d36a959005f14142535b58c44cd0f1de8cb (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')
-rw-r--r--net/ipv4/esp4.c5
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