[Python-checkins] r65472 - in python/trunk/Lib: mailbox.py test/test_mailbox.py
andrew.kuchling
python-checkins at python.org
Mon Aug 4 03:43:43 CEST 2008
Author: andrew.kuchling
Date: Mon Aug 4 03:43:43 2008
New Revision: 65472
Log:
Bug 3228: Explicitly supply the file mode to avoid creating executable files,
and add corresponding tests.
Possible 2.5 backport candidate
Modified:
python/trunk/Lib/mailbox.py
python/trunk/Lib/test/test_mailbox.py
Modified: python/trunk/Lib/mailbox.py
==============================================================================
--- python/trunk/Lib/mailbox.py (original)
+++ python/trunk/Lib/mailbox.py Mon Aug 4 03:43:43 2008
@@ -398,7 +398,8 @@
result = Maildir(path, factory=self._factory)
maildirfolder_path = os.path.join(path, 'maildirfolder')
if not os.path.exists(maildirfolder_path):
- os.close(os.open(maildirfolder_path, os.O_CREAT | os.O_WRONLY))
+ os.close(os.open(maildirfolder_path, os.O_CREAT | os.O_WRONLY,
+ 0666))
return result
def remove_folder(self, folder):
@@ -1900,7 +1901,7 @@
def _create_carefully(path):
"""Create a file if it doesn't exist and open for reading and writing."""
- fd = os.open(path, os.O_CREAT | os.O_EXCL | os.O_RDWR)
+ fd = os.open(path, os.O_CREAT | os.O_EXCL | os.O_RDWR, 0666)
try:
return open(path, 'rb+')
finally:
Modified: python/trunk/Lib/test/test_mailbox.py
==============================================================================
--- python/trunk/Lib/test/test_mailbox.py (original)
+++ python/trunk/Lib/test/test_mailbox.py Mon Aug 4 03:43:43 2008
@@ -716,6 +716,16 @@
for msg in self._box:
pass
+ def test_file_perms(self):
+ # From bug #3228, we want to verify that the file created inside a Maildir
+ # subfolder isn't marked as executable.
+ subfolder = self._box.add_folder('subfolder')
+ path = os.path.join(subfolder._path, 'maildirfolder')
+ st = os.stat(path)
+ perms = st.st_mode
+ self.assertFalse((perms & 0111)) # Execute bits should all be off.
+
+
class _TestMboxMMDF(TestMailbox):
def tearDown(self):
@@ -805,11 +815,27 @@
self._box.close()
-
class TestMbox(_TestMboxMMDF):
_factory = lambda self, path, factory=None: mailbox.mbox(path, factory)
+ def test_file_perms(self):
+ # From bug #3228, we want to verify that the mailbox file isn't executable,
+ # even if the umask is set to something that would leave executable bits set.
+ # We only run this test on platforms that support umask.
+ if hasattr(os, 'umask'):
+ try:
+ old_umask = os.umask(0077)
+ self._box.close()
+ os.unlink(self._path)
+ self._box = mailbox.mbox(self._path, create=True)
+ self._box.add('')
+ self._box.close()
+ st = os.stat(self._path)
+ perms = st.st_mode
+ self.assertFalse((perms & 0111)) # Execute bits should all be off.
+ finally:
+ os.umask(old_umask)
class TestMMDF(_TestMboxMMDF):
More information about the Python-checkins
mailing list