[PATCH 3/9] batctl: tcpdump: check frame length before reading the ethernet header
Sven Eckelmann <[email protected]> Sun, 05 Jul 2026 19:30:06 +0200
| Newsgroups | org.open-mesh.lists.batman |
|---|---|
| Message-ID | <[email protected]> |
parse_eth_hdr() reads ether_type without checking that the buffer actually
contains a complete ethernet header. Use an header length check like in all
other functions.
Fixes: 3bdfc388e74b ("implement simple tcpdump, first only batman packets")
Signed-off-by: Sven Eckelmann <[email protected]>
---
tcpdump.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/tcpdump.c b/tcpdump.c
index 33b7226..b6305fd 100644
--- a/tcpdump.c
+++ b/tcpdump.c
@@ -1200,6 +1200,8 @@ static void parse_eth_hdr(unsigned char *packet_buff, ssize_t buff_len,
struct batadv_ogm_packet *batman_ogm_packet;
struct ether_header *eth_hdr;
+ LEN_CHECK(buff_len, sizeof(*eth_hdr), "ETH HEADER");
+
eth_hdr = (struct ether_header *)packet_buff;
switch (ntohs(eth_hdr->ether_type)) {
--
2.47.3