X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/406b0e3e9293a545c831ee9ed1558c3a5f5bd60d..f152c1268f28fc84d15d364b742f500e12374b33:/print-ip6.c diff --git a/print-ip6.c b/print-ip6.c index 2e1803f0..9f590f2a 100644 --- a/print-ip6.c +++ b/print-ip6.c @@ -293,15 +293,19 @@ ip6_print(netdissect_options *ndo, const u_char *bp, u_int length) switch (nh) { case IPPROTO_HOPOPTS: advance = hbhopt_print(ndo, cp); + if (advance < 0) + return; nh = *cp; break; case IPPROTO_DSTOPTS: advance = dstopt_print(ndo, cp); + if (advance < 0) + return; nh = *cp; break; case IPPROTO_FRAGMENT: advance = frag6_print(ndo, cp, (const u_char *)ip6); - if (ndo->ndo_snapend <= cp + advance) + if (advance < 0 || ndo->ndo_snapend <= cp + advance) return; nh = *cp; fragmented = 1;