ip: set the snapshot length for the payload correctly.

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.
This commit is contained in:
Guy Harris 2024-10-30 22:26:34 -07:00
parent d9355ee3f1
commit a4221536d5

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