Skip to content

Commit 0d61ef7

Browse files
authored
util: fix tests about invalid pcaps on Python 3.7 (#5159)
AI-Assisted: no
1 parent c405070 commit 0d61ef7

1 file changed

Lines changed: 35 additions & 33 deletions

File tree

test/regression.uts

Lines changed: 35 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -2291,7 +2291,25 @@ pcapngdefaults = BytesIO(base64.b64decode(b'Cg0NChwAAABNPCsaAQAAAP//////////HAAA
22912291
= Read a pcap file
22922292
pktpcap = rdpcap(pcapfile)
22932293

2294-
= Preserve complete captures when the final gzip CRC is invalid
2294+
= Read a pcapng file
2295+
pktpcapng = rdpcap(pcapngfile)
2296+
assert pktpcapng[0].time == 1454163407.666223
2297+
2298+
= Read a pcap file with nanosecond precision
2299+
pktpcapnano = rdpcap(pcapnanofile)
2300+
assert pktpcapnano[0].time == 1454163407.666223049
2301+
2302+
= Read a pcapng file with nanosecond precision and default tsresol
2303+
pktpcapngdefaults = rdpcap(pcapngdefaults)
2304+
assert pktpcapngdefaults[0].time == 1575115986.114775512
2305+
assert Ether in pktpcapngdefaults[0]
2306+
2307+
= Read a pcapng with little-endian SHB
2308+
pktcapng = sniff(offline=scapy_path("/test/pcaps/macos.pcapng.gz"))
2309+
assert len(pktcapng) != 0
2310+
2311+
= Read a pcap - final gzip CRC is invalid
2312+
~ needs_py38plus
22952313

22962314
import gzip
22972315
import struct
@@ -2311,22 +2329,24 @@ with open(badgzfile, "wb") as stream:
23112329
assert len(rdpcap(badgzfile)) == 1
23122330
assert len(rdpcap(BytesIO(goodgzpcap))) == 1
23132331

2314-
= Read a pcapng file
2315-
pktpcapng = rdpcap(pcapngfile)
2316-
assert pktpcapng[0].time == 1454163407.666223
2317-
2318-
= Read a pcap file with nanosecond precision
2319-
pktpcapnano = rdpcap(pcapnanofile)
2320-
assert pktpcapnano[0].time == 1454163407.666223049
2332+
= Read a pcap - gzip capture from a named nonseekable stream
2333+
~ needs_py38plus
23212334

2322-
= Read a pcapng file with nanosecond precision and default tsresol
2323-
pktpcapngdefaults = rdpcap(pcapngdefaults)
2324-
assert pktpcapngdefaults[0].time == 1575115986.114775512
2325-
assert Ether in pktpcapngdefaults[0]
2335+
import gzip
2336+
import os
2337+
import struct
2338+
from unittest.mock import patch
23262339

2327-
= Read a pcapng with little-endian SHB
2328-
pktcapng = sniff(offline=scapy_path("/test/pcaps/macos.pcapng.gz"))
2329-
assert len(pktcapng) != 0
2340+
frame = bytes(Ether(src="00:00:00:00:00:01", dst="00:00:00:00:00:02"))
2341+
capture = struct.pack("<IHHiIII", 0xa1b2c3d4, 2, 4, 0, 0, 0xffff, 1)
2342+
capture += struct.pack("<IIII", 0, 0, len(frame), len(frame)) + frame
2343+
capture = gzip.compress(capture, mtime=0)
2344+
read_fd, write_fd = os.pipe()
2345+
assert os.write(write_fd, capture) == len(capture)
2346+
os.close(write_fd)
2347+
stream = os.fdopen(read_fd, "rb")
2348+
with patch("builtins.open", return_value=stream):
2349+
assert len(rdpcap("capture.pcap.gz")) == 1
23302350

23312351
= Write a pcapng
23322352

@@ -5399,21 +5419,3 @@ c2 = CLI2(cli=False)
53995419

54005420
assert c1.shares() == 1
54015421
assert c2.shares() == 2
5402-
5403-
= Read a gzip capture from a named nonseekable stream
5404-
5405-
import gzip
5406-
import os
5407-
import struct
5408-
from unittest.mock import patch
5409-
5410-
frame = bytes(Ether(src="00:00:00:00:00:01", dst="00:00:00:00:00:02"))
5411-
capture = struct.pack("<IHHiIII", 0xa1b2c3d4, 2, 4, 0, 0, 0xffff, 1)
5412-
capture += struct.pack("<IIII", 0, 0, len(frame), len(frame)) + frame
5413-
capture = gzip.compress(capture, mtime=0)
5414-
read_fd, write_fd = os.pipe()
5415-
assert os.write(write_fd, capture) == len(capture)
5416-
os.close(write_fd)
5417-
stream = os.fdopen(read_fd, "rb")
5418-
with patch("builtins.open", return_value=stream):
5419-
assert len(rdpcap("capture.pcap.gz")) == 1

0 commit comments

Comments
 (0)