]> 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 21:49:53 +0000 (13:49 -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.

(cherry picked from commit 6bc9e72adcb9acd46720b9e8f0e1d41bbde1bdb9)

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__);
        }