X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/7b4e6191a77bdaff6f04af00b93eafb718b33662..refs/pull/1034/head:/print-sflow.c diff --git a/print-sflow.c b/print-sflow.c index 71ca2663..31067110 100644 --- a/print-sflow.c +++ b/print-sflow.c @@ -864,7 +864,7 @@ sflow_print(netdissect_options *ndo, /* ok they seem to want to know everything - lets fully decode it */ if (ip_version == 1) { - nsamples=GET_BE_U_4(sflow_datagram->samples); + nsamples = GET_BE_U_4(sflow_datagram->samples); ND_PRINT("sFlowv%u, %s agent %s, agent-id %u, seqnum %u, uptime %u, samples %u, length %u", GET_BE_U_4(sflow_datagram->version), "IPv4", @@ -876,10 +876,11 @@ sflow_print(netdissect_options *ndo, len); /* skip Common header */ + ND_ICHECK_ZU(tlen, <, sizeof(struct sflow_datagram_t)); tptr += sizeof(struct sflow_datagram_t); tlen -= sizeof(struct sflow_datagram_t); } else { - nsamples=GET_BE_U_4(sflow_v6_datagram->samples); + nsamples = GET_BE_U_4(sflow_v6_datagram->samples); ND_PRINT("sFlowv%u, %s agent %s, agent-id %u, seqnum %u, uptime %u, samples %u, length %u", GET_BE_U_4(sflow_v6_datagram->version), "IPv6", @@ -891,6 +892,7 @@ sflow_print(netdissect_options *ndo, len); /* skip Common header */ + ND_ICHECK_ZU(tlen, <, sizeof(struct sflow_v6_datagram_t)); tptr += sizeof(struct sflow_v6_datagram_t); tlen -= sizeof(struct sflow_v6_datagram_t); } @@ -912,7 +914,7 @@ sflow_print(netdissect_options *ndo, sflow_sample_len); /* basic sanity check */ - if (sflow_sample_type == 0 || sflow_sample_len ==0) { + if (sflow_sample_type == 0 || sflow_sample_len == 0) { return; }