From: Avram Lubkin Date: Tue, 26 Jul 2016 14:11:10 +0000 (-0400) Subject: Reseed entropy pool after forking X-Git-Tag: v1.15.0~32^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F194%2Fhead;p=thirdparty%2Fdnspython.git Reseed entropy pool after forking --- 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)