summaryrefslogtreecommitdiffstats
path: root/apps/speed.c
diff options
context:
space:
mode:
authorIngo Franzki <ifranzki@linux.ibm.com>2023-07-19 14:59:16 +0200
committerPauli <pauli@openssl.org>2023-07-21 10:08:10 +1000
commitcc7e2b20de02959c328f96e464e5fb8b256a00e0 (patch)
tree498081423eb849ca411980ebfa58173e5fdaee01 /apps/speed.c
parent51a7066e2092b062a502e29166adfcc297803058 (diff)
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 <ifranzki@linux.ibm.com> Reviewed-by: Tomas Mraz <tomas@openssl.org> Reviewed-by: Paul Dale <pauli@openssl.org> (Merged from https://github.com/openssl/openssl/pull/21491)
Diffstat (limited to 'apps/speed.c')
-rw-r--r--apps/speed.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/apps/speed.c b/apps/speed.c
index b7804096c4..677ba15e93 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++)