]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
Fix potential memory leak on failure of dsa_gen_init()
authorNiels Dossche <niels.dossche@ugent.be>
Wed, 20 Nov 2024 19:22:43 +0000 (20:22 +0100)
committerTomas Mraz <tomas@openssl.org>
Mon, 25 Nov 2024 14:11:28 +0000 (15:11 +0100)
When dsa_gen_set_params()  returns 0, it could have duplicated the memory for the parameter
OSSL_PKEY_PARAM_FFC_DIGEST already in gctx->mdname, leading to a memory leak.

Allocated here: https://github.com/openssl/openssl/blob/47a80fd2034cd4314d3b4958539dcd3106087109/providers/implementations/keymgmt/dsa_kmgmt.c#L524
Can return 0 here: https://github.com/openssl/openssl/blob/47a80fd2034cd4314d3b4958539dcd3106087109/providers/implementations/keymgmt/dsa_kmgmt.c#L529-L536

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Paul Dale <ppzgs1@gmail.com>
Reviewed-by: Shane Lontis <shane.lontis@oracle.com>
(Merged from https://github.com/openssl/openssl/pull/26016)

(cherry picked from commit d7e8f6f7816f2be3ab5e498d180424940fd58695)

providers/implementations/keymgmt/dsa_kmgmt.c

index 2187568b2bd4d03a09f370ed288777c2352e001d..83ff02e4ca778bb1b5a2823d670466148715373f 100644 (file)
@@ -430,7 +430,7 @@ static void *dsa_gen_init(void *provctx, int selection,
         OSSL_FIPS_IND_INIT(gctx)
     }
     if (!dsa_gen_set_params(gctx, params)) {
-        OPENSSL_free(gctx);
+        dsa_gen_cleanup(gctx);
         gctx = NULL;
     }
     return gctx;