]> git.ipfire.org Git - thirdparty/dnspython.git/commitdiff
Reseed entropy pool after forking 194/head
authorAvram Lubkin <git_hub@avram.us>
Tue, 26 Jul 2016 14:11:10 +0000 (10:11 -0400)
committerGitHub <noreply@github.com>
Tue, 26 Jul 2016 14:11:10 +0000 (10:11 -0400)
dns/entropy.py

index e34092834d3238c0e65b14c07129e03b40dab02a..22114579af48a7f6ff03f329e6d9b677f7a13a12 100644 (file)
@@ -46,8 +46,10 @@ class EntropyPool(object):
         if seed is not None:
             self.stir(bytearray(seed))
             self.seeded = True
+            self.seed_pid = os.getpid()
         else:
             self.seeded = False
+            self.seed_pid = 0
 
     def stir(self, entropy, already_locked=False):
         if not already_locked:
@@ -64,7 +66,7 @@ class EntropyPool(object):
                 self.lock.release()
 
     def _maybe_seed(self):
-        if not self.seeded:
+        if not self.seeded or self.seed_pid != os.getpid():
             try:
                 seed = os.urandom(16)
             except:
@@ -77,6 +79,8 @@ class EntropyPool(object):
                 except:
                     seed = str(time.time())
             self.seeded = True
+            self.seed_pid = os.getpid()
+            self.digest = None
             seed = bytearray(seed)
             self.stir(seed, True)