diff -Nur linux-2.4.20/net/ipv6/exthdrs.c linux-2.4.20.flo/net/ipv6/exthdrs.c --- linux-2.4.20/net/ipv6/exthdrs.c Thu Jun 21 06:00:55 2001 +++ linux-2.4.20.flo/net/ipv6/exthdrs.c Sat Jan 25 19:34:24 2003 @@ -276,7 +276,7 @@ addr_type = ipv6_addr_type(addr); - if (addr_type&IPV6_ADDR_MULTICAST) { + if (addr_type&(IPV6_ADDR_MULTICAST|IPV6_ADDR_MAPPED)) { kfree_skb(skb); return -1; } Binary files linux-2.4.20/net/ipv6/icmp.o and linux-2.4.20.flo/net/ipv6/icmp.o differ Binary files linux-2.4.20/net/ipv6/ip6_fib.o and linux-2.4.20.flo/net/ipv6/ip6_fib.o differ diff -Nur linux-2.4.20/net/ipv6/ip6_input.c linux-2.4.20.flo/net/ipv6/ip6_input.c --- linux-2.4.20/net/ipv6/ip6_input.c Thu Apr 12 21:11:39 2001 +++ linux-2.4.20.flo/net/ipv6/ip6_input.c Sat Jan 25 19:46:35 2003 @@ -79,6 +79,12 @@ if (hdr->version != 6) goto err; + /* Silently drop all IPv4 mapped packets */ + if (ipv6_addr_type(&hdr->saddr) & IPV6_ADDR_MAPPED) + goto err; + if (ipv6_addr_type(&hdr->daddr) & IPV6_ADDR_MAPPED) + goto err; + pkt_len = ntohs(hdr->payload_len); /* pkt_len may be zero if Jumbo payload option is present */