Workaround egd rand source deficiencies
authorTomas Mraz <tomas@openssl.org>
Thu, 20 Oct 2022 14:14:29 +0000 (16:14 +0200)
committerTomas Mraz <tomas@openssl.org>
Mon, 24 Oct 2022 10:02:16 +0000 (12:02 +0200)
With egd as the rand source the reseed after fork confuses the egd.

Fixes #19396

Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/19454)

(cherry picked from commit 0b3fec502298f9a16889d2507948a916416e71cf)

test/drbgtest.c

index 111b9d864c0393e87519e12eda1fea27eab5620a..29583b568f0e5bf5f5ea1c7ec41dd4b256fd5c94 100644 (file)
@@ -277,7 +277,7 @@ static int test_drbg_reseed(int expect_success,
 }
 
 
-#if defined(OPENSSL_SYS_UNIX)
+#if defined(OPENSSL_SYS_UNIX) && !defined(OPENSSL_RAND_SEED_EGD)
 /* number of children to fork */
 #define DRBG_FORK_COUNT 9
 /* two results per child, two for the parent */
@@ -895,7 +895,7 @@ err:
 int setup_tests(void)
 {
     ADD_TEST(test_rand_reseed);
-#if defined(OPENSSL_SYS_UNIX)
+#if defined(OPENSSL_SYS_UNIX) && !defined(OPENSSL_RAND_SEED_EGD)
     ADD_ALL_TESTS(test_rand_fork_safety, RANDOM_SIZE);
 #endif
     ADD_TEST(test_rand_prediction_resistance);