]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-sflow.c
sFlow: Add a test capture file
[tcpdump] / print-sflow.c
index 68bca0177cfb3ad7ae1f85296d0d5d709dd11f2d..4a8e5a97cea167df21660d0455b543048fdebeec 100644 (file)
@@ -19,7 +19,7 @@
 
 /* \summary: sFlow protocol printer */
 
-/* specification: http://www.sflow.org/developers/specifications.php */
+/* specification: https://sflow.org/developers/specifications.php */
 
 #ifdef HAVE_CONFIG_H
 #include <config.h>
@@ -872,6 +872,12 @@ sflow_print(netdissect_options *ndo,
     tptr = pptr;
     tlen = len;
     sflow_datagram = (const struct sflow_datagram_t *)pptr;
+    if (len < sizeof(struct sflow_datagram_t)) {
+        ND_PRINT("sFlowv%u", GET_BE_U_4(sflow_datagram->version));
+        ND_PRINT(" [length %u < %zu]", len, sizeof(struct sflow_datagram_t));
+        nd_print_invalid(ndo);
+        return;
+    }
     ND_TCHECK_SIZE(sflow_datagram);
 
     /*