diff options
author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2018-09-22 18:02:53 (GMT) |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2018-09-22 18:02:53 (GMT) |
commit | ed21919d69ac22232cbc0dad0323477818112b6f (patch) | |
tree | f77d7cf2c61439ab1828f4268f2b810e6edd0f2d | |
parent | 09f2eec05420a9df76de8ab65d1dd89e9d0aa4b7 (diff) | |
download | cpython-ed21919d69ac22232cbc0dad0323477818112b6f.zip cpython-ed21919d69ac22232cbc0dad0323477818112b6f.tar.gz cpython-ed21919d69ac22232cbc0dad0323477818112b6f.tar.bz2 |
bpo-34472: Add data descriptor signature to zipfile (GH-8871) (GH-9398)
This makes streamed zips compatible with MacOS Archive Utility and
other applications.
(cherry picked from commit 4ba3b50bfe6d50cd82d208023ea23e203ab50589)
Co-authored-by: Silas Sewell <silas@sewell.org>
-rw-r--r-- | Lib/zipfile.py | 6 | ||||
-rw-r--r-- | Misc/ACKS | 1 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2018-08-23-09-25-08.bpo-34472.cGyYrO.rst | 3 |
3 files changed, 8 insertions, 2 deletions
diff --git a/Lib/zipfile.py b/Lib/zipfile.py index bc757a3..5bb3587 100644 --- a/Lib/zipfile.py +++ b/Lib/zipfile.py @@ -164,6 +164,8 @@ _CD64_NUMBER_ENTRIES_TOTAL = 7 _CD64_DIRECTORY_SIZE = 8 _CD64_OFFSET_START_CENTDIR = 9 +_DD_SIGNATURE = 0x08074b50 + _EXTRA_FIELD_STRUCT = struct.Struct('<HH') def _strip_extra(extra, xids): @@ -1031,8 +1033,8 @@ class _ZipWriteFile(io.BufferedIOBase): # Write updated header info if self._zinfo.flag_bits & 0x08: # Write CRC and file sizes after the file data - fmt = '<LQQ' if self._zip64 else '<LLL' - self._fileobj.write(struct.pack(fmt, self._zinfo.CRC, + fmt = '<LLQQ' if self._zip64 else '<LLLL' + self._fileobj.write(struct.pack(fmt, _DD_SIGNATURE, self._zinfo.CRC, self._zinfo.compress_size, self._zinfo.file_size)) self._zipfile.start_dir = self._fileobj.tell() else: @@ -1419,6 +1419,7 @@ Roger D. Serwy Jerry Seutter Pete Sevander Denis Severson +Silas Sewell Ian Seyer Dmitry Shachnev Anish Shah diff --git a/Misc/NEWS.d/next/Library/2018-08-23-09-25-08.bpo-34472.cGyYrO.rst b/Misc/NEWS.d/next/Library/2018-08-23-09-25-08.bpo-34472.cGyYrO.rst new file mode 100644 index 0000000..208ec0b --- /dev/null +++ b/Misc/NEWS.d/next/Library/2018-08-23-09-25-08.bpo-34472.cGyYrO.rst @@ -0,0 +1,3 @@ +Improved compatibility for streamed files in :mod:`zipfile`. Previously an +optional signature was not being written and certain ZIP applications were +not supported. Patch by Silas Sewell. |