]> The Tcpdump Group git mirrors - tcpdump/commitdiff
ipv6: set the snapshot length for the payload correctly.
authorGuy Harris <[email protected]>
Mon, 4 Nov 2024 17:36:12 +0000 (09:36 -0800)
committerGuy Harris <[email protected]>
Wed, 13 Nov 2024 07:16:54 +0000 (23:16 -0800)
Cut off the snapshot length to the end of the IP payload or the end of
the data in which it's contained, whichever comes first.

print-ip6.c

index aaf31b4ee4880021c5f8eb17b6b299de5421a546..269b41fb2a7aabc87b2cf811126734728a49b027 100644 (file)
@@ -301,9 +301,11 @@ ip6_print(netdissect_options *ndo, const u_char *bp, u_int length)
        ND_TCHECK_SIZE(ip6);
 
        /*
-        * Cut off the snapshot length to the end of the IP payload.
+        * Cut off the snapshot length to the end of the IP payload
+        * or the end of the data in which it's contained, whichever
+        * comes first.
         */
-       if (!nd_push_snaplen(ndo, bp, len)) {
+       if (!nd_push_snaplen(ndo, bp, ND_MIN(length, len))) {
                (*ndo->ndo_error)(ndo, S_ERR_ND_MEM_ALLOC,
                        "%s: can't push snaplen on buffer stack", __func__);
        }