diff options
author | Ingo Franzki <ifranzki@linux.ibm.com> | 2023-07-19 14:59:16 +0200 |
---|---|---|
committer | Pauli <pauli@openssl.org> | 2023-07-21 10:08:10 +1000 |
commit | cc7e2b20de02959c328f96e464e5fb8b256a00e0 (patch) | |
tree | 498081423eb849ca411980ebfa58173e5fdaee01 /apps | |
parent | 51a7066e2092b062a502e29166adfcc297803058 (diff) | |
download | openssl-cc7e2b20de02959c328f96e464e5fb8b256a00e0.tar.gz |
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')
-rw-r--r-- | apps/speed.c | 6 |
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++) |