]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
Fix leak of a RAND_POOL in error condition
authorTomas Mraz <tomas@openssl.org>
Wed, 11 Dec 2024 15:34:25 +0000 (16:34 +0100)
committerTomas Mraz <tomas@openssl.org>
Fri, 13 Dec 2024 07:30:18 +0000 (08:30 +0100)
Fixes Coverity 1636676

Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Paul Dale <ppzgs1@gmail.com>
Reviewed-by: Tim Hudson <tjh@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26154)

providers/implementations/rands/seed_src.c
providers/implementations/rands/seed_src_jitter.c

index b335a638623a79a1475184cb25739906914e1f68..1faab39138d2cad9938aa2bea2b596ef27b9aa43 100644 (file)
@@ -112,8 +112,10 @@ static int seed_src_generate(void *vseed, unsigned char *out, size_t outlen,
     entropy_available = ossl_pool_acquire_entropy(pool);
 
     if (entropy_available > 0) {
-        if (!ossl_rand_pool_adin_mix_in(pool, adin, adin_len))
+        if (!ossl_rand_pool_adin_mix_in(pool, adin, adin_len)) {
+            ossl_rand_pool_free(pool);
             return 0;
+        }
         memcpy(out, ossl_rand_pool_buffer(pool), ossl_rand_pool_length(pool));
     }
 
index 5d1ff374023a7c94bb10cc0df457b3a31c18c231..3df03f1e23ddab0a13435c3cd94f0576cdfd7450 100644 (file)
@@ -198,8 +198,10 @@ static int jitter_generate(void *vseed, unsigned char *out, size_t outlen,
     entropy_available = ossl_prov_acquire_entropy_from_jitter(s, pool);
 
     if (entropy_available > 0) {
-        if (!ossl_rand_pool_adin_mix_in(pool, adin, adin_len))
+        if (!ossl_rand_pool_adin_mix_in(pool, adin, adin_len)) {
+            ossl_rand_pool_free(pool);
             return 0;
+        }
         memcpy(out, ossl_rand_pool_buffer(pool), ossl_rand_pool_length(pool));
     }