cpython: 32de35f0f877 (original) (raw)

--- a/Lib/test/test_zipfile.py +++ b/Lib/test/test_zipfile.py @@ -760,6 +760,20 @@ class OtherTests(unittest.TestCase): chk = zipfile.is_zipfile(fp) self.assertTrue(not chk)

+

+ def test_is_zip_valid_file(self): """Check that is_zipfile() correctly identifies zip files.""" # - passing a filename

--- a/Lib/zipfile.py +++ b/Lib/zipfile.py @@ -166,6 +166,8 @@ def _EndRecData64(fpin, offset, endrec): return endrec data = fpin.read(sizeEndCentDir64Locator)

@@ -176,6 +178,8 @@ def _EndRecData64(fpin, offset, endrec): # Assume no 'zip64 extensible data' fpin.seek(offset - sizeEndCentDir64Locator - sizeEndCentDir64, 2) data = fpin.read(sizeEndCentDir64)

@@ -211,7 +215,9 @@ def _EndRecData(fpin): except IOError: return None data = fpin.read()

@@ -235,6 +241,9 @@ def _EndRecData(fpin): if start >= 0: # found the magic number; attempt to unpack and interpret recData = data[start:start+sizeEndCentDir]

@@ -246,7 +255,7 @@ def _EndRecData(fpin): endrec) # Unable to find a valid end of central directory structure

class ZipInfo (object): @@ -818,9 +827,11 @@ class ZipFile(object): total = 0 while total < size_cd: centdir = fp.read(sizeCentralDir)

@@ -948,10 +959,12 @@ class ZipFile(object): # Skip the file header: fheader = zef_file.read(sizeFileHeader)

--- a/Misc/NEWS +++ b/Misc/NEWS @@ -202,6 +202,10 @@ Core and Builtins Library ------- +- Issue #4844: ZipFile now raises BadZipfile when opens a ZIP file with an