]> The Tcpdump Group git mirrors - tcpdump/commitdiff
ip: set the snapshot length for the payload correctly.
authorGuy Harris <[email protected]>
Thu, 31 Oct 2024 05:26:34 +0000 (22:26 -0700)
committerGuy Harris <[email protected]>
Thu, 31 Oct 2024 19:02:57 +0000 (12:02 -0700)
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 a4221536d52271098acd24aad11fc6657afa76b8)

print-ip.c

index c32c6d41d0e6686426e1ecca153701c54e53f58a..a332bd7885fe4f77f84f74944068dafadab93d20 100644 (file)
@@ -358,9 +358,11 @@ ip_print(netdissect_options *ndo,
 
        ND_TCHECK_SIZE(ip);
        /*
-        * 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__);
        }