#3394: zipfile.writestr doesn't set external attributes, so files are extracted mode 000 on Unix
This commit is contained in:
parent
8c664e8628
commit
5fdfa3e36d
|
@ -372,6 +372,19 @@ class TestsWithSourceFile(unittest.TestCase):
|
|||
# remove the test file subdirectories
|
||||
shutil.rmtree(os.path.join(os.getcwd(), 'ziptest2dir'))
|
||||
|
||||
def zip_test_writestr_permissions(self, f, compression):
|
||||
# Make sure that writestr creates files with mode 0600,
|
||||
# when it is passed a name rather than a ZipInfo instance.
|
||||
|
||||
self.makeTestArchive(f, compression)
|
||||
zipfp = zipfile.ZipFile(f, "r")
|
||||
zinfo = zipfp.getinfo('strfile')
|
||||
self.assertEqual(zinfo.external_attr, 0600 << 16)
|
||||
|
||||
def test_writestr_permissions(self):
|
||||
for f in (TESTFN2, TemporaryFile(), StringIO()):
|
||||
self.zip_test_writestr_permissions(f, zipfile.ZIP_STORED)
|
||||
|
||||
def tearDown(self):
|
||||
os.remove(TESTFN)
|
||||
os.remove(TESTFN2)
|
||||
|
|
|
@ -1064,6 +1064,7 @@ class ZipFile:
|
|||
zinfo = ZipInfo(filename=zinfo_or_arcname,
|
||||
date_time=time.localtime(time.time())[:6])
|
||||
zinfo.compress_type = self.compression
|
||||
zinfo.external_attr = 0600 << 16
|
||||
else:
|
||||
zinfo = zinfo_or_arcname
|
||||
|
||||
|
|
|
@ -44,6 +44,10 @@ Library
|
|||
|
||||
- Deprecate the sunaudio module for removal in Python 3.0.
|
||||
|
||||
- Issue #3394: zipfile.writestr sets external attributes when passed a
|
||||
file name rather than a ZipInfo instance, so files are extracted with
|
||||
mode 0600 rather than 000 under Unix.
|
||||
|
||||
|
||||
What's New in Python 2.6 beta 2?
|
||||
================================
|
||||
|
|
Loading…
Reference in New Issue