From ebcd0ced14388d5859e4c57e9916a3f18e35e9c2 Mon Sep 17 00:00:00 2001 From: Antoine Pitrou Date: Fri, 5 Sep 2008 23:30:23 +0000 Subject: [PATCH] Issue #3535: zipfile couldn't read some zip files larger than 2GB. Reviewed by Amaury Forgeot d'Arc. --- Lib/zipfile.py | 6 +++--- Misc/NEWS | 4 +++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Lib/zipfile.py b/Lib/zipfile.py index ac17177e9c3..bb8fc53de4d 100644 --- a/Lib/zipfile.py +++ b/Lib/zipfile.py @@ -163,6 +163,7 @@ def _EndRecData64(fpin, offset, endrec): return endrec # Update the original endrec using data from the ZIP64 record + endrec[_ECD_SIGNATURE] = sig endrec[_ECD_DISK_NUMBER] = disk_num endrec[_ECD_DISK_START] = disk_dir endrec[_ECD_ENTRIES_THIS_DISK] = dircount @@ -735,9 +736,8 @@ class ZipFile: # "concat" is zero, unless zip was concatenated to another file concat = endrec[_ECD_LOCATION] - size_cd - offset_cd - if endrec[_ECD_LOCATION] > ZIP64_LIMIT: - # If the offset of the "End of Central Dir" record requires Zip64 - # extension structures, account for them + if endrec[_ECD_SIGNATURE] == stringEndArchive64: + # If Zip64 extension structures are present, account for them concat -= (sizeEndCentDir64 + sizeEndCentDir64Locator) if self.debug > 2: diff --git a/Misc/NEWS b/Misc/NEWS index 1ab85819188..d06bfebd1db 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -56,7 +56,9 @@ C-API 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 its symbolic link.