From 48a3f2f9fbd5b20e6c8d0fcaec2f73a4d57832c8 Mon Sep 17 00:00:00 2001 From: Guillaume Valadon Date: Mon, 14 Oct 2024 20:06:12 +0200 Subject: [PATCH 1/2] Check the instance of ADDR_ENTRY[0] --- scapy/layers/netbios.py | 3 ++- test/scapy/layers/netbios.uts | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/scapy/layers/netbios.py b/scapy/layers/netbios.py index c41e532330c..0995d67d771 100644 --- a/scapy/layers/netbios.py +++ b/scapy/layers/netbios.py @@ -185,7 +185,8 @@ class NBNSQueryResponse(Packet): ] def mysummary(self): - if not self.ADDR_ENTRY: + if not self.ADDR_ENTRY or \ + not isinstance(self.ADDR_ENTRY[0], NBNS_ADD_ENTRY): return "NBNSQueryResponse" return "NBNSQueryResponse '\\\\%s' is at %s" % ( self.RR_NAME.decode(errors="backslashreplace"), diff --git a/test/scapy/layers/netbios.uts b/test/scapy/layers/netbios.uts index b5d6e8d4f46..251884cb020 100644 --- a/test/scapy/layers/netbios.uts +++ b/test/scapy/layers/netbios.uts @@ -99,3 +99,12 @@ assert pkt[NBNSWackResponse].RR_NAME == b'SARAH' z = raw(TCP()/NBTSession()) assert z == b'\x00\x8b\x00\x8b\x00\x00\x00\x00\x00\x00\x00\x00P\x02 \x00\x00\x00\x00\x00\x00\x00\x00\x00' assert NBTSession in TCP(z) + += OSS-Fuzz Findings + +# Note: the packet is corrupted +conf.debug_dissector = False +raw_packet = b'E\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x05\x00\x00\x00' +packet = NBNSQueryResponse(raw_packet) +assert packet.summary() == "NBNSQueryResponse" +conf.debug_dissector = True From d7b4c7a3ec567ee9a0d936170ec4d0d689ec5d48 Mon Sep 17 00:00:00 2001 From: Guillaume Valadon Date: Mon, 21 Oct 2024 12:52:55 +0200 Subject: [PATCH 2/2] Update test/scapy/layers/netbios.uts Co-authored-by: gpotter2 <10530980+gpotter2@users.noreply.github.com> --- test/scapy/layers/netbios.uts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/test/scapy/layers/netbios.uts b/test/scapy/layers/netbios.uts index 251884cb020..eaff95decfe 100644 --- a/test/scapy/layers/netbios.uts +++ b/test/scapy/layers/netbios.uts @@ -103,8 +103,7 @@ assert NBTSession in TCP(z) = OSS-Fuzz Findings # Note: the packet is corrupted -conf.debug_dissector = False -raw_packet = b'E\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x05\x00\x00\x00' -packet = NBNSQueryResponse(raw_packet) -assert packet.summary() == "NBNSQueryResponse" -conf.debug_dissector = True +with no_debug_dissector(): + raw_packet = b'E\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x05\x00\x00\x00' + packet = NBNSQueryResponse(raw_packet) + assert packet.summary() == "NBNSQueryResponse"