summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2013-08-13 23:28:28 (GMT)
committerVictor Stinner <victor.stinner@gmail.com>2013-08-13 23:28:28 (GMT)
commit97869103ba09fb6a468312d303193902ff13160a (patch)
treefbb1a98f601ddc3eed85f2a0bd01f0e0ea884903
parent0c7907dd48968d492f50b774239954a6af1302d5 (diff)
downloadcpython-97869103ba09fb6a468312d303193902ff13160a.zip
cpython-97869103ba09fb6a468312d303193902ff13160a.tar.gz
cpython-97869103ba09fb6a468312d303193902ff13160a.tar.bz2
Close #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.
-rw-r--r--Lib/tempfile.py2
-rw-r--r--Lib/test/test_tempfile.py4
-rw-r--r--Misc/NEWS5
3 files changed, 8 insertions, 3 deletions
diff --git a/Lib/tempfile.py b/Lib/tempfile.py
index 10b6a1b..7df881b 100644
--- a/Lib/tempfile.py
+++ b/Lib/tempfile.py
@@ -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():
diff --git a/Lib/test/test_tempfile.py b/Lib/test/test_tempfile.py
index 437b02b..6b146d2 100644
--- a/Lib/test/test_tempfile.py
+++ b/Lib/test/test_tempfile.py
@@ -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)
diff --git a/Misc/NEWS b/Misc/NEWS
index 150a5fe..2c7938b 100644
--- 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.