The branch master has been updated via 40184c96103a388209939c1c19920971c05bb78c (commit) from a983764e17551b2988bd684279ac9e9077d84601 (commit)
- Log ----------------------------------------------------------------- commit 40184c96103a388209939c1c19920971c05bb78c Author: Tomas Mraz <to...@openssl.org> Date: Wed Jul 21 18:45:01 2021 +0200 DSA/RSA_print(): Fix potential memory leak Fixes #10777 Reviewed-by: Paul Dale <pa...@openssl.org> (Merged from https://github.com/openssl/openssl/pull/16130) ----------------------------------------------------------------------- Summary of changes: crypto/dsa/dsa_prn.c | 12 ++++++++---- crypto/rsa/rsa_prn.c | 6 ++++-- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/crypto/dsa/dsa_prn.c b/crypto/dsa/dsa_prn.c index c5ec7d5dfe..6f001a50f0 100644 --- a/crypto/dsa/dsa_prn.c +++ b/crypto/dsa/dsa_prn.c @@ -55,9 +55,11 @@ int DSA_print(BIO *bp, const DSA *x, int off) EVP_PKEY *pk; int ret; pk = EVP_PKEY_new(); - if (pk == NULL || !EVP_PKEY_set1_DSA(pk, (DSA *)x)) + if (pk == NULL) return 0; - ret = EVP_PKEY_print_private(bp, pk, off, NULL); + ret = EVP_PKEY_set1_DSA(pk, (DSA *)x); + if (ret) + ret = EVP_PKEY_print_private(bp, pk, off, NULL); EVP_PKEY_free(pk); return ret; } @@ -67,9 +69,11 @@ int DSAparams_print(BIO *bp, const DSA *x) EVP_PKEY *pk; int ret; pk = EVP_PKEY_new(); - if (pk == NULL || !EVP_PKEY_set1_DSA(pk, (DSA *)x)) + if (pk == NULL) return 0; - ret = EVP_PKEY_print_params(bp, pk, 4, NULL); + ret = EVP_PKEY_set1_DSA(pk, (DSA *)x); + if (ret) + ret = EVP_PKEY_print_params(bp, pk, 4, NULL); EVP_PKEY_free(pk); return ret; } diff --git a/crypto/rsa/rsa_prn.c b/crypto/rsa/rsa_prn.c index 4a317dadc4..35723c87ae 100644 --- a/crypto/rsa/rsa_prn.c +++ b/crypto/rsa/rsa_prn.c @@ -40,9 +40,11 @@ int RSA_print(BIO *bp, const RSA *x, int off) EVP_PKEY *pk; int ret; pk = EVP_PKEY_new(); - if (pk == NULL || !EVP_PKEY_set1_RSA(pk, (RSA *)x)) + if (pk == NULL) return 0; - ret = EVP_PKEY_print_private(bp, pk, off, NULL); + ret = EVP_PKEY_set1_RSA(pk, (RSA *)x); + if (ret) + ret = EVP_PKEY_print_private(bp, pk, off, NULL); EVP_PKEY_free(pk); return ret; }