summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancois-Xavier Le Bail <devel.fx.lebail@orange.fr>2020-04-11 15:50:32 +0200
committerFrancois-Xavier Le Bail <devel.fx.lebail@orange.fr>2020-04-11 15:50:32 +0200
commite3b8b6f5cb34b8a39f7bb105ca42b9589e454593 (patch)
tree9c53d1509533fbcceb39e931918fa05b3ccd5977
parent6eb9a3d10c30c6e8b210651d7d0dbfabbae46289 (diff)
downloadtcpdump-e3b8b6f5cb34b8a39f7bb105ca42b9589e454593.tar.gz
IPv4/IPv6 demux: ICMPv6 in IPv4 is invalid
" Every ICMPv6 message is preceded by an IPv6 header and zero or more IPv6 extension headers. The ICMPv6 header is identified by a Next Header value of 58 in the immediately preceding header." (RFC 4443)
-rw-r--r--print-ip-demux.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/print-ip-demux.c b/print-ip-demux.c
index b6d6b706..d3f03b66 100644
--- a/print-ip-demux.c
+++ b/print-ip-demux.c
@@ -109,7 +109,13 @@ again:
break;
case IPPROTO_ICMPV6:
- icmp6_print(ndo, bp, length, iph, fragmented);
+ if (ver == 6)
+ icmp6_print(ndo, bp, length, iph, fragmented);
+ else {
+ ND_PRINT("[%s requires IPv6]",
+ tok2str(ipproto_values,"unknown",nh));
+ nd_print_invalid(ndo);
+ }
break;
case IPPROTO_PIGP: