X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/de8046ceb45735cd7cdf98f34d3bee468d6106c2..refs/heads/tcpdump-4.9:/print-sflow.c diff --git a/print-sflow.c b/print-sflow.c index 41828d42..dcaf28e8 100644 --- a/print-sflow.c +++ b/print-sflow.c @@ -884,7 +884,7 @@ sflow_print(netdissect_options *ndo, if (len < sizeof(struct sflow_datagram_t)) { ND_TCHECK(sflow_datagram->version); ND_PRINT((ndo, "sFlowv%u", EXTRACT_32BITS(sflow_datagram->version))); - ND_PRINT((ndo, " [length %u < %" PRIsize "]", + ND_PRINT((ndo, " [length %u < %zu]", len, sizeof(struct sflow_datagram_t))); ND_PRINT((ndo, " (invalid)")); return; @@ -924,6 +924,8 @@ sflow_print(netdissect_options *ndo, /* skip Common header */ tptr += sizeof(const struct sflow_datagram_t); + + if(tlen <= sizeof(const struct sflow_datagram_t)) goto trunc; tlen -= sizeof(const struct sflow_datagram_t); while (nsamples > 0 && tlen > 0) {