]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
Add a missing RUN_ONCE in rand_lib.c
authorMatt Caswell <matt@openssl.org>
Thu, 18 Mar 2021 10:22:51 +0000 (10:22 +0000)
committerPauli <ppzgs1@gmail.com>
Sat, 20 Mar 2021 00:26:00 +0000 (10:26 +1000)
Some of the callbacks in rand_lib.c were being invoked without the
RUN_ONCE for that file being called. We add it during rand_pool_new
which should cover all cases.

Fixes #7870
Fixes #11144

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/14603)

crypto/rand/rand_lib.c

index ba3a29e584685c304fb13224bc217550972a0d3a..46e83d0741fee18e181409be6c98aa4de6793806 100644 (file)
@@ -432,9 +432,13 @@ err:
 RAND_POOL *rand_pool_new(int entropy_requested, int secure,
                          size_t min_len, size_t max_len)
 {
-    RAND_POOL *pool = OPENSSL_zalloc(sizeof(*pool));
+    RAND_POOL *pool;
     size_t min_alloc_size = RAND_POOL_MIN_ALLOCATION(secure);
 
+    if (!RUN_ONCE(&rand_init, do_rand_init))
+        return NULL;
+
+    pool = OPENSSL_zalloc(sizeof(*pool));
     if (pool == NULL) {
         RANDerr(RAND_F_RAND_POOL_NEW, ERR_R_MALLOC_FAILURE);
         return NULL;