]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-ip.c
ip: set the snapshot length for the payload correctly.
[tcpdump] / 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__);
        }