From c5257fd8d0b37a615484e937289b28ebe2c87ac9 Mon Sep 17 00:00:00 2001 From: Tomas Mraz Date: Wed, 11 Dec 2024 16:34:25 +0100 Subject: [PATCH] Fix leak of a RAND_POOL in error condition Fixes Coverity 1636676 Reviewed-by: Neil Horman Reviewed-by: Paul Dale Reviewed-by: Tim Hudson (Merged from https://github.com/openssl/openssl/pull/26154) --- providers/implementations/rands/seed_src.c | 4 +++- providers/implementations/rands/seed_src_jitter.c | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/providers/implementations/rands/seed_src.c b/providers/implementations/rands/seed_src.c index b335a63862..1faab39138 100644 --- a/providers/implementations/rands/seed_src.c +++ b/providers/implementations/rands/seed_src.c @@ -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)); } diff --git a/providers/implementations/rands/seed_src_jitter.c b/providers/implementations/rands/seed_src_jitter.c index 5d1ff37402..3df03f1e23 100644 --- a/providers/implementations/rands/seed_src_jitter.c +++ b/providers/implementations/rands/seed_src_jitter.c @@ -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)); }