diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2013-01-31 13:29:20 (GMT) |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2013-01-31 13:29:20 (GMT) |
commit | d72bfe9eb90da597b41b37ce32f87f995a2c22c5 (patch) | |
tree | bd04e40b23864a6440e318d70beeceb3d75dc7b3 /Lib/test/test_zipfile.py | |
parent | 58ed80efa636b3dcf7238ac52055a102a641e547 (diff) | |
parent | d2b1527f1418f4bac9d05933623ef1a9d1948f61 (diff) | |
download | cpython-d72bfe9eb90da597b41b37ce32f87f995a2c22c5.zip cpython-d72bfe9eb90da597b41b37ce32f87f995a2c22c5.tar.gz cpython-d72bfe9eb90da597b41b37ce32f87f995a2c22c5.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/test_zipfile.py')
-rw-r--r-- | Lib/test/test_zipfile.py | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/Lib/test/test_zipfile.py b/Lib/test/test_zipfile.py index e7acc30..b0c529f 100644 --- a/Lib/test/test_zipfile.py +++ b/Lib/test/test_zipfile.py @@ -996,6 +996,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 |