From: Dr. Matthias St. Pierre Date: Thu, 30 May 2019 16:52:39 +0000 (+0200) Subject: drbg: add fork id to additional data on UNIX systems X-Git-Tag: openssl-3.0.0-alpha1~1393 X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=commitdiff_plain;h=5562dbb39cbf9db41dad9b8d3ae643262e458c63 drbg: add fork id to additional data on UNIX systems Provides a little extra fork-safety on UNIX systems, adding to the fact that all DRBGs reseed automatically when the fork_id changes. Reviewed-by: Paul Dale Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/9832) --- diff --git a/crypto/rand/rand_unix.c b/crypto/rand/rand_unix.c index 813964665f..8641badbff 100644 --- a/crypto/rand/rand_unix.c +++ b/crypto/rand/rand_unix.c @@ -704,6 +704,7 @@ int rand_pool_add_nonce_data(RAND_POOL *pool) int rand_pool_add_additional_data(RAND_POOL *pool) { struct { + int fork_id; CRYPTO_THREAD_ID tid; uint64_t time; } data; @@ -713,9 +714,11 @@ int rand_pool_add_additional_data(RAND_POOL *pool) /* * Add some noise from the thread id and a high resolution timer. + * The fork_id adds some extra fork-safety. * The thread id adds a little randomness if the drbg is accessed * concurrently (which is the case for the drbg). */ + data.fork_id = openssl_get_fork_id(); data.tid = CRYPTO_THREAD_get_current_id(); data.time = get_timer_bits();