From 6c0977c9c64db5cf03f9d09ca6fa8d9972a47d10 Mon Sep 17 00:00:00 2001 From: abdulm6 Date: Fri, 14 Aug 2026 17:43:26 -0400 Subject: [PATCH] gh-155639: Reject ZIP files with inconsistent EOCD disk information --- Lib/test/test_zipfile/test_core.py | 76 +++++++++++++++++++ Lib/zipfile/__init__.py | 21 ++++- ...-08-14-16-29-48.gh-issue-155639.Lm3kQw.rst | 2 + 3 files changed, 96 insertions(+), 3 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2026-08-14-16-29-48.gh-issue-155639.Lm3kQw.rst diff --git a/Lib/test/test_zipfile/test_core.py b/Lib/test/test_zipfile/test_core.py index d0ae7ce787bee3..a0a45aba537e40 100644 --- a/Lib/test/test_zipfile/test_core.py +++ b/Lib/test/test_zipfile/test_core.py @@ -1136,6 +1136,54 @@ def test_bad_zip64_end_of_central_dir(self): zipfile.ZipFile(io.BytesIO(zipdata)) self.assertFalse(zipfile.is_zipfile(io.BytesIO(zipdata))) + def test_multi_disk_zip64_end_of_central_dir(self): + zipdata = self.make_zip64_file() + eocd64 = zipdata.rfind(zipfile.stringEndArchive64) + disk_fields_offset = eocd64 + struct.calcsize('<4sQ2H') + + for disk_number, disk_start in ((1, 0), (0, 1), (1, 1)): + corrupted = bytearray(zipdata) + struct.pack_into( + '