diff options
Diffstat (limited to 'net/ipv6/esp6.c')
-rw-r--r-- | net/ipv6/esp6.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/net/ipv6/esp6.c b/net/ipv6/esp6.c index 7db66f10e00d..444053254676 100644 --- a/net/ipv6/esp6.c +++ b/net/ipv6/esp6.c | |||
@@ -230,6 +230,12 @@ static int esp6_input(struct xfrm_state *x, struct sk_buff *skb) | |||
230 | } | 230 | } |
231 | /* ... check padding bits here. Silly. :-) */ | 231 | /* ... check padding bits here. Silly. :-) */ |
232 | 232 | ||
233 | /* RFC4303: Drop dummy packets without any error */ | ||
234 | if (nexthdr[1] == IPPROTO_NONE) { | ||
235 | ret = -EINVAL; | ||
236 | goto out; | ||
237 | } | ||
238 | |||
233 | pskb_trim(skb, skb->len - alen - padlen - 2); | 239 | pskb_trim(skb, skb->len - alen - padlen - 2); |
234 | ret = nexthdr[1]; | 240 | ret = nexthdr[1]; |
235 | } | 241 | } |