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)); }