]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Close #12015: The tempfile module now uses a suffix of 8 random characters
authorVictor Stinner <victor.stinner@gmail.com>
Tue, 13 Aug 2013 23:28:28 +0000 (01:28 +0200)
committerVictor Stinner <victor.stinner@gmail.com>
Tue, 13 Aug 2013 23:28:28 +0000 (01:28 +0200)
instead of 6, to reduce the risk of filename collision. The entropy was reduced
when uppercase letters were removed from the charset used to generate random
characters.

Lib/tempfile.py
Lib/test/test_tempfile.py
Misc/NEWS

index 10b6a1b334edb3ac723aca34b56b356589bb0804..7df881b7d3b4553247ed9b768d3b91ab02eb560f 100644 (file)
@@ -125,7 +125,7 @@ class _RandomNameSequence:
     def __next__(self):
         c = self.characters
         choose = self.rng.choice
-        letters = [choose(c) for dummy in "123456"]
+        letters = [choose(c) for dummy in range(8)]
         return ''.join(letters)
 
 def _candidate_tempdir_list():
index 437b02b49efed4986e98653e077786608071ac16..6b146d23c9fd0b4ff46bd4ba4f486ad9e18028d5 100644 (file)
@@ -35,7 +35,7 @@ else:
 # Common functionality.
 class BaseTestCase(unittest.TestCase):
 
-    str_check = re.compile(r"[a-zA-Z0-9_-]{6}$")
+    str_check = re.compile(r"^[a-z0-9_-]{8}$")
 
     def setUp(self):
         self._warnings_manager = support.check_warnings()
@@ -62,7 +62,7 @@ class BaseTestCase(unittest.TestCase):
 
         nbase = nbase[len(pre):len(nbase)-len(suf)]
         self.assertTrue(self.str_check.match(nbase),
-                     "random string '%s' does not match /^[a-zA-Z0-9_-]{6}$/"
+                     "random string '%s' does not match ^[a-z0-9_-]{8}$"
                      % nbase)
 
 
index 150a5fec0ea171e45917c2b3e49b3e9222dd0cea..2c7938bf04ff14b15e29c2e81eb5fed4ceab8d3a 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -28,6 +28,11 @@ Core and Builtins
 Library
 -------
 
+- Issue #12015: The tempfile module now uses a suffix of 8 random characters
+  instead of 6, to reduce the risk of filename collision. The entropy was
+  reduced when uppercase letters were removed from the charset used to generate
+  random characters.
+
 - Issue #18585: Add :func:`textwrap.shorten` to collapse and truncate a
   piece of text to a given length.