Commit ebcd0ced authored by Antoine Pitrou's avatar Antoine Pitrou

Issue #3535: zipfile couldn't read some zip files larger than 2GB.

Reviewed by Amaury Forgeot d'Arc.
parent cdeb24bb
...@@ -163,6 +163,7 @@ def _EndRecData64(fpin, offset, endrec): ...@@ -163,6 +163,7 @@ def _EndRecData64(fpin, offset, endrec):
return endrec return endrec
# Update the original endrec using data from the ZIP64 record # Update the original endrec using data from the ZIP64 record
endrec[_ECD_SIGNATURE] = sig
endrec[_ECD_DISK_NUMBER] = disk_num endrec[_ECD_DISK_NUMBER] = disk_num
endrec[_ECD_DISK_START] = disk_dir endrec[_ECD_DISK_START] = disk_dir
endrec[_ECD_ENTRIES_THIS_DISK] = dircount endrec[_ECD_ENTRIES_THIS_DISK] = dircount
...@@ -735,9 +736,8 @@ class ZipFile: ...@@ -735,9 +736,8 @@ class ZipFile:
# "concat" is zero, unless zip was concatenated to another file # "concat" is zero, unless zip was concatenated to another file
concat = endrec[_ECD_LOCATION] - size_cd - offset_cd concat = endrec[_ECD_LOCATION] - size_cd - offset_cd
if endrec[_ECD_LOCATION] > ZIP64_LIMIT: if endrec[_ECD_SIGNATURE] == stringEndArchive64:
# If the offset of the "End of Central Dir" record requires Zip64 # If Zip64 extension structures are present, account for them
# extension structures, account for them
concat -= (sizeEndCentDir64 + sizeEndCentDir64Locator) concat -= (sizeEndCentDir64 + sizeEndCentDir64Locator)
if self.debug > 2: if self.debug > 2:
......
...@@ -56,7 +56,9 @@ C-API ...@@ -56,7 +56,9 @@ C-API
Library Library
------- -------
- Issue 3776: Deprecate the bsddb package for removal in 3.0. - Issue #3535: zipfile couldn't read some zip files larger than 2GB.
- Issue #3776: Deprecate the bsddb package for removal in 3.0.
- Issue #3762: platform.architecture() fails if python is lanched via - Issue #3762: platform.architecture() fails if python is lanched via
its symbolic link. its symbolic link.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment