]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-sflow.c
Makefile.in: don't remove configure and config.h.in in make distclean.
[tcpdump] / print-sflow.c
index 71ca26630ab56067148093aff74b81b17020821c..31067110fdee983cf502fb982e343ff4bb0efca3 100644 (file)
@@ -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;
         }