Issue #12856: Ensure child processes do not inherit the parent's random seed for filename generation in the tempfile module.
Patch by Brian Harring.
diff --git a/Lib/tempfile.py b/Lib/tempfile.py
index 1c71814..2023280 100644
--- a/Lib/tempfile.py
+++ b/Lib/tempfile.py
@@ -118,9 +118,16 @@
def __init__(self):
self.mutex = _allocate_lock()
- self.rng = _Random()
self.normcase = _os.path.normcase
+ @property
+ def rng(self):
+ cur_pid = _os.getpid()
+ if cur_pid != getattr(self, '_rng_pid', None):
+ self._rng = _Random()
+ self._rng_pid = cur_pid
+ return self._rng
+
def __iter__(self):
return self