|
@@ -498,7 +498,8 @@ int ip6_forward(struct sk_buff *skb)
|
|
|
int addrtype = ipv6_addr_type(&hdr->saddr);
|
|
|
|
|
|
/* This check is security critical. */
|
|
|
- if (addrtype & (IPV6_ADDR_MULTICAST|IPV6_ADDR_LOOPBACK))
|
|
|
+ if (addrtype == IPV6_ADDR_ANY ||
|
|
|
+ addrtype & (IPV6_ADDR_MULTICAST | IPV6_ADDR_LOOPBACK))
|
|
|
goto error;
|
|
|
if (addrtype & IPV6_ADDR_LINKLOCAL) {
|
|
|
icmpv6_send(skb, ICMPV6_DEST_UNREACH,
|