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..eaff95decfe 100644 --- a/test/scapy/layers/netbios.uts +++ b/test/scapy/layers/netbios.uts @@ -99,3 +99,11 @@ 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 +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"