Segmentation fault in parent rng cleanup
authorafshinpir <afshinpir@users.noreply.github.com>
Wed, 8 Mar 2023 03:42:00 +0000 (16:42 +1300)
committerPauli <pauli@openssl.org>
Tue, 14 Mar 2023 21:30:41 +0000 (08:30 +1100)
CLA: trivial
When `cleanup_entropy()` is called to cleanup parent by calling
provided `OSSL_FUNC_rand_clear_seed_fn` method, incorrect random
context is passed to the method. So accessing that context creates
a segmentation fault. Parent context should be passed rather than
DRBG's own context.

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/20454)

providers/implementations/rands/drbg.c

index 11ba4552331f661212049d2c07250153e1cbb295..de9b2a5a44cde8d75b8c3a5776b7d6e923fc032c 100644 (file)
@@ -255,7 +255,7 @@ static void cleanup_entropy(PROV_DRBG *drbg, unsigned char *out, size_t outlen)
     } else if (drbg->parent_clear_seed != NULL) {
         if (!ossl_drbg_lock_parent(drbg))
             return;
-        drbg->parent_clear_seed(drbg, out, outlen);
+        drbg->parent_clear_seed(drbg->parent, out, outlen);
         ossl_drbg_unlock_parent(drbg);
     }
 }