diff options
-rw-r--r-- | net/ipv6/ndisc.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/net/ipv6/ndisc.c b/net/ipv6/ndisc.c index 429622d74705..350f86005c13 100644 --- a/net/ipv6/ndisc.c +++ b/net/ipv6/ndisc.c | |||
@@ -671,6 +671,11 @@ static void ndisc_recv_ns(struct sk_buff *skb) | |||
671 | bool inc; | 671 | bool inc; |
672 | int is_router = -1; | 672 | int is_router = -1; |
673 | 673 | ||
674 | if (skb->len < sizeof(struct nd_msg)) { | ||
675 | ND_PRINTK(2, warn, "NS: packet too short\n"); | ||
676 | return; | ||
677 | } | ||
678 | |||
674 | if (ipv6_addr_is_multicast(&msg->target)) { | 679 | if (ipv6_addr_is_multicast(&msg->target)) { |
675 | ND_PRINTK(2, warn, "NS: multicast target address\n"); | 680 | ND_PRINTK(2, warn, "NS: multicast target address\n"); |
676 | return; | 681 | return; |