Thomas Wouters <tho...@python.org> added the comment:

FWIW, yes, this is because zipimport doesn't support ZIP64, and doesn't even 
flag it as an error when the ZIP requires it. Instead it skips files; the ZIP64 
format works by setting the fields that would overflow to the maximum value as 
a signal that the real value should be read from the ZIP64 records, which means 
it's still a valid non-64-bit ZIP file, just a truncated one.

Adding ZIP64 support to zipimport is not trivial, and requires breaking some 
behaviour that's bad (not according to the ZIP spec) but actually covered by 
zipimport's tests: prepending arbitrary data to the ZIP file by just 
concatenating them together (rather than rewriting the ZIP archive's offsets). 
I don't think there's going to be an easy fix here, although I am working on 
open-sourcing a replacement zipimport that I wrote for work, which does support 
ZIP64 properly (and also fixes some other fundamental flaws in zipimport). I 
hope to have that done soon, and we can discuss replacing zipimport with that 
module in Python 3.8 or later.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue32959>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to