Drop thread-local fast_rng on fork.

This will cause the child process to construct a new one in a nice
safe way.

Closes ticket 29668; bug not in any released Tor.
This commit is contained in:
Nick Mathewson 2019-03-06 09:59:10 -05:00
parent db2e916afe
commit ab6ad3c040

View File

@ -152,6 +152,12 @@ crypto_prefork(void)
#ifdef ENABLE_NSS
crypto_nss_prefork();
#endif
/* It is not safe to share a fast_rng object across a fork boundary unless
* we actually have zero-on-fork support in map_anon.c. If we have
* drop-on-fork support, we will crash; if we have neither, we will yield
* a copy of the parent process's rng, which is scary and insecure.
*/
destroy_thread_fast_rng();
}
/** Run operations that the crypto library requires to be happy again