From bb64f4481a8d8c8d278a32e478338ec74c479107 Mon Sep 17 00:00:00 2001 From: Avram Lubkin Date: Tue, 26 Jul 2016 10:11:10 -0400 Subject: [PATCH] Reseed entropy pool after forking --- dns/entropy.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/dns/entropy.py b/dns/entropy.py index e3409283..22114579 100644 --- a/dns/entropy.py +++ b/dns/entropy.py @@ -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) -- 2.47.3