summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2013-01-31 13:27:07 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2013-01-31 13:27:07 (GMT)
commitd2b1527f1418f4bac9d05933623ef1a9d1948f61 (patch)
treeedf98076cc77cb2f10c05129e9225bacb6a991d6 /Lib/test
parentfc20d77b408937723e9105f0d5a55d322a8d6853 (diff)
downloadcpython-d2b1527f1418f4bac9d05933623ef1a9d1948f61.zip
cpython-d2b1527f1418f4bac9d05933623ef1a9d1948f61.tar.gz
cpython-d2b1527f1418f4bac9d05933623ef1a9d1948f61.tar.bz2
Issue #4844: ZipFile now raises BadZipFile when opens a ZIP file with an
incomplete "End of Central Directory" record. Original patch by Guilherme Polo and Alan McIntyre.
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/test_zipfile.py14
1 files changed, 14 insertions, 0 deletions
diff --git a/Lib/test/test_zipfile.py b/Lib/test/test_zipfile.py
index 367f37e..741cee9 100644
--- a/Lib/test/test_zipfile.py
+++ b/Lib/test/test_zipfile.py
@@ -844,6 +844,20 @@ class OtherTests(unittest.TestCase):
chk = zipfile.is_zipfile(fp)
self.assertTrue(not chk)
+ def test_damaged_zipfile(self):
+ """Check that zipfiles with missing bytes at the end raise BadZipFile."""
+ # - Create a valid zip file
+ fp = io.BytesIO()
+ with zipfile.ZipFile(fp, mode="w") as zipf:
+ zipf.writestr("foo.txt", b"O, for a Muse of Fire!")
+ zipfiledata = fp.getvalue()
+
+ # - Now create copies of it missing the last N bytes and make sure
+ # a BadZipFile exception is raised when we try to open it
+ for N in range(len(zipfiledata)):
+ fp = io.BytesIO(zipfiledata[:N])
+ self.assertRaises(zipfile.BadZipFile, zipfile.ZipFile, fp)
+
def test_is_zip_valid_file(self):
"""Check that is_zipfile() correctly identifies zip files."""
# - passing a filename