From 6e1df8d0d44817a7b9810c7d8b5c81423fb52cdb Mon Sep 17 00:00:00 2001 From: Antoine Pitrou Date: Fri, 25 Jul 2008 19:58:18 +0000 Subject: [PATCH] Merged revisions 65235 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r65235 | antoine.pitrou | 2008-07-25 21:42:26 +0200 (ven., 25 juil. 2008) | 3 lines #3394: zipfile.writestr doesn't set external attributes, so files are extracted mode 000 on Unix ........ --- Lib/test/test_zipfile.py | 13 +++++++++++++ Lib/zipfile.py | 1 + Misc/NEWS | 17 +++++++++++++++-- 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/Lib/test/test_zipfile.py b/Lib/test/test_zipfile.py index a647fc6e2c..9e565fb153 100644 --- a/Lib/test/test_zipfile.py +++ b/Lib/test/test_zipfile.py @@ -365,6 +365,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, 0o600 << 16) + + def test_writestr_permissions(self): + for f in (TESTFN2, TemporaryFile(), io.BytesIO()): + self.zip_test_writestr_permissions(f, zipfile.ZIP_STORED) + def tearDown(self): os.remove(TESTFN) os.remove(TESTFN2) diff --git a/Lib/zipfile.py b/Lib/zipfile.py index fda990385d..e4bc019d1b 100644 --- a/Lib/zipfile.py +++ b/Lib/zipfile.py @@ -1075,6 +1075,7 @@ class ZipFile: zinfo = ZipInfo(filename=zinfo_or_arcname, date_time=time.localtime(time.time())[:6]) zinfo.compress_type = self.compression + zinfo.external_attr = 0o600 << 16 else: zinfo = zinfo_or_arcname diff --git a/Misc/NEWS b/Misc/NEWS index 54a0baa94c..76ecbccf81 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -4,6 +4,19 @@ Python News (editors: check NEWS.help for information about editing NEWS using ReST.) +What's new in Python 3.0b3? +=========================== + +*Release date: XX-XXX-2008* + +Library +------- + +- 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 3.0b2? =========================== @@ -191,7 +204,7 @@ Library - The ``xmlrpc`` package was created; it contains the old ``xmlrpclib`` module as ``xmlrpc.client`` and the content of the old ``SimpleXMLRPCServer`` and ``DocXMLRPCServer`` modules - as ``xmlrpc.server``. + as ``xmlrpc.server``. - The ``dbm`` package was created, containing the old modules ``anydbm`` and ``whichdb`` in its ``__init__.py``, and having @@ -562,7 +575,7 @@ Core and Builtins - Fixed `imp.find_module()` to obey the -*- coding: -*- header. - Changed `__file__` and `co_filename` to unicode. The path names are decoded - with `Py_FileSystemDefaultEncoding` and a new API method + with `Py_FileSystemDefaultEncoding` and a new API method `PyUnicode_DecodeFSDefault(char*)` was added. - io.open() and _fileio.FileIO have grown a new argument closefd. A -- 2.40.0