summaryrefslogtreecommitdiff
path: root/Lib/zipfile.py
diff options
context:
space:
mode:
authorR David Murray <rdmurray@bitdance.com>2011-06-09 15:50:51 -0400
committerR David Murray <rdmurray@bitdance.com>2011-06-09 15:50:51 -0400
commit4fbb9dbd3421fca6d4c289d996ef035da0cef330 (patch)
tree3d74ae019fe03d7b5417373fdc1b3b11c17f8391 /Lib/zipfile.py
parent0f663d07e669c39ce9a7ddfa71ed1293379a358e (diff)
downloadcpython-git-4fbb9dbd3421fca6d4c289d996ef035da0cef330.tar.gz
#10694: zipfile now ignores garbage at the end of a zipfile.
Original fix by 'rep', final patch (with tests) by Xuanji Li.
Diffstat (limited to 'Lib/zipfile.py')
-rw-r--r--Lib/zipfile.py18
1 files changed, 8 insertions, 10 deletions
diff --git a/Lib/zipfile.py b/Lib/zipfile.py
index 50f484873a..5cc7816e0c 100644
--- a/Lib/zipfile.py
+++ b/Lib/zipfile.py
@@ -246,16 +246,14 @@ def _EndRecData(fpin):
# found the magic number; attempt to unpack and interpret
recData = data[start:start+sizeEndCentDir]
endrec = list(struct.unpack(structEndArchive, recData))
- comment = data[start+sizeEndCentDir:]
- # check that comment length is correct
- if endrec[_ECD_COMMENT_SIZE] == len(comment):
- # Append the archive comment and start offset
- endrec.append(comment)
- endrec.append(maxCommentStart + start)
-
- # Try to read the "Zip64 end of central directory" structure
- return _EndRecData64(fpin, maxCommentStart + start - filesize,
- endrec)
+ commentSize = endrec[_ECD_COMMENT_SIZE] #as claimed by the zip file
+ comment = data[start+sizeEndCentDir:start+sizeEndCentDir+commentSize]
+ endrec.append(comment)
+ endrec.append(maxCommentStart + start)
+
+ # Try to read the "Zip64 end of central directory" structure
+ return _EndRecData64(fpin, maxCommentStart + start - filesize,
+ endrec)
# Unable to find a valid end of central directory structure
return