Danny Yoo added the comment:
Unfortunately, fixing just zlib.crc32 isn't quite enough for our purposes. We
still will see OverflowErrow in zipfile if compression is selected.
Demonstration code:
############################################
import zipfile
## Possible workaround: monkey-patch crc32 from binascii?!
import binascii
zipfile.crc32 = binascii.crc32
content = 'a'*(1<<31)
filename = '/tmp/zip_test.zip'
zf = zipfile.ZipFile(filename, "w",
compression=zipfile.ZIP_DEFLATED,
allowZip64=True)
zf.writestr('big', content)
zf.close()
zf = zipfile.ZipFile(filename, "r", allowZip64=True)
print zf.open('big').read() == content
#############################################
This will raise the following error under Python 2.7.6:
#############################################
$ python zip_test.py
Traceback (most recent call last):
File "zip_test.py", line 13, in <module>
zf.writestr('big', content)
File "/usr/lib/python2.7/zipfile.py", line 1228, in writestr
bytes = co.compress(bytes) + co.flush()
OverflowError: size does not fit in an int
#############################################
If we use compression=zipfile.ZIP_STORED, we don't see this error, but it kind
of misses a major point of using zipfile.
----------
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue23306>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com