Skip to content

Commit 4b71ab8

Browse files
authored
Catch OverflowError (#4529)
1 parent 1464fa9 commit 4b71ab8

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

scapy/utils.py

+8-1
Original file line numberDiff line numberDiff line change
@@ -1500,7 +1500,14 @@ def _read_packet(self, size=MTU):
15001500
if len(hdr) < 16:
15011501
raise EOFError
15021502
sec, usec, caplen, wirelen = struct.unpack(self.endian + "IIII", hdr)
1503-
return (self.f.read(caplen)[:size],
1503+
1504+
try:
1505+
data = self.f.read(caplen)[:size]
1506+
except OverflowError as e:
1507+
warning(f"Pcap: {e}")
1508+
raise EOFError
1509+
1510+
return (data,
15041511
RawPcapReader.PacketMetadata(sec=sec, usec=usec,
15051512
wirelen=wirelen, caplen=caplen))
15061513

test/regression.uts

+5
Original file line numberDiff line numberDiff line change
@@ -2343,6 +2343,11 @@ file = BytesIO(b"\xd4\xc3\xb2\xa1\x02\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x0
23432343
l = rdpcap(file)
23442344
assert l[0][LDAP].summary() == "LDAP"
23452345

2346+
# Issue #69628 - 32-bit alternative
2347+
file = BytesIO(b'\xd4\xc3\xb2\xa1\x02\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x01\x00\x00\x00%\xa8\xddfK\x1b\x05\x00\xca\xca\xca\xca*\x00\x00\x00\xff\xff\xff\xff\xff\xff\x86"\x11&\xab3\x08\x06\x00\x01\x08\x00\x06\x04\x00\x01]\x80\x0f\x13*r\n\x00\x02\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
2348+
l = rdpcap(file)
2349+
assert len(l) == 0 or ARP in l[0]
2350+
23462351
= Read a pcap file with wirelen != captured len
23472352
pktpcapwirelen = rdpcap(pcapwirelenfile)
23482353

0 commit comments

Comments
 (0)