diff options
Diffstat (limited to 'net/ipv6/ip6_output.c')
-rw-r--r-- | net/ipv6/ip6_output.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c index fd7cd1bfe151..871bdec09edb 100644 --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c | |||
@@ -498,7 +498,8 @@ int ip6_forward(struct sk_buff *skb) | |||
498 | int addrtype = ipv6_addr_type(&hdr->saddr); | 498 | int addrtype = ipv6_addr_type(&hdr->saddr); |
499 | 499 | ||
500 | /* This check is security critical. */ | 500 | /* This check is security critical. */ |
501 | if (addrtype & (IPV6_ADDR_MULTICAST|IPV6_ADDR_LOOPBACK)) | 501 | if (addrtype == IPV6_ADDR_ANY || |
502 | addrtype & (IPV6_ADDR_MULTICAST | IPV6_ADDR_LOOPBACK)) | ||
502 | goto error; | 503 | goto error; |
503 | if (addrtype & IPV6_ADDR_LINKLOCAL) { | 504 | if (addrtype & IPV6_ADDR_LINKLOCAL) { |
504 | icmpv6_send(skb, ICMPV6_DEST_UNREACH, | 505 | icmpv6_send(skb, ICMPV6_DEST_UNREACH, |