summaryrefslogtreecommitdiff
path: root/print-null.c
diff options
context:
space:
mode:
Diffstat (limited to 'print-null.c')
-rw-r--r--print-null.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/print-null.c b/print-null.c
index 874521e2..f1067ff5 100644
--- a/print-null.c
+++ b/print-null.c
@@ -30,8 +30,11 @@
#include <string.h>
#include "netdissect.h"
+#include "extract.h"
#include "af.h"
+static const char tstr[] = " [|null]";
+
/*
* The DLT_NULL packet header is 4 bytes long. It contains a host-byte-order
* 32-bit integer that specifies the family, e.g. AF_INET.
@@ -77,13 +80,12 @@ null_if_print(netdissect_options *ndo, const struct pcap_pkthdr *h, const u_char
{
u_int length = h->len;
u_int caplen = h->caplen;
- u_int family;
+ uint32_t family;
- if (caplen < NULL_HDRLEN) {
- ND_PRINT("[|null]");
- return (NULL_HDRLEN);
- }
+ if (caplen < NULL_HDRLEN)
+ goto trunc;
+ ND_TCHECK_4(p);
memcpy((char *)&family, (const char *)p, sizeof(family));
/*
@@ -137,6 +139,9 @@ null_if_print(netdissect_options *ndo, const struct pcap_pkthdr *h, const u_char
}
return (NULL_HDRLEN);
+trunc:
+ ND_PRINT("%s", tstr);
+ return (NULL_HDRLEN);
}
/*