From cc7e2b20de02959c328f96e464e5fb8b256a00e0 Mon Sep 17 00:00:00 2001 From: Ingo Franzki Date: Wed, 19 Jul 2023 14:59:16 +0200 Subject: [PATCH] speed: Fix memory leak Free the signature stack after iterating over all found signatures. Free the kem and signature stacks at the end of speed_main() if not NULL. Signed-off-by: Ingo Franzki Reviewed-by: Tomas Mraz Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/21491) --- apps/speed.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/apps/speed.c b/apps/speed.c index b7804096c4c..677ba15e93f 100644 --- a/apps/speed.c +++ b/apps/speed.c @@ -2040,6 +2040,8 @@ int speed_main(int argc, char **argv) sigs_algname[sigs_algs_len++] = OPENSSL_strdup(sig_name); } } + sk_EVP_SIGNATURE_pop_free(sig_stack, EVP_SIGNATURE_free); + sig_stack = NULL; /* Remaining arguments are algorithms. */ argc = opt_num_rest(); @@ -4227,8 +4229,12 @@ skip_hmac: OPENSSL_free(evp_cmac_name); for (k = 0; k < kems_algs_len; k++) OPENSSL_free(kems_algname[k]); + if (kem_stack != NULL) + sk_EVP_KEM_pop_free(kem_stack, EVP_KEM_free); for (k = 0; k < sigs_algs_len; k++) OPENSSL_free(sigs_algname[k]); + if (sig_stack != NULL) + sk_EVP_SIGNATURE_pop_free(sig_stack, EVP_SIGNATURE_free); if (async_jobs > 0) { for (i = 0; i < loopargs_len; i++) -- 2.47.2