Standard style for all EVP_xxx_free routines

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/14193)
This commit is contained in:
Rich Salz 2021-02-15 12:31:36 -05:00 committed by Richard Levitte
parent ad72484909
commit 543e740b95
10 changed files with 87 additions and 82 deletions

View File

@ -391,16 +391,16 @@ static void *evp_asym_cipher_from_algorithm(int name_id,
void EVP_ASYM_CIPHER_free(EVP_ASYM_CIPHER *cipher)
{
if (cipher != NULL) {
int i;
int i;
CRYPTO_DOWN_REF(&cipher->refcnt, &i, cipher->lock);
if (i > 0)
return;
ossl_provider_free(cipher->prov);
CRYPTO_THREAD_lock_free(cipher->lock);
OPENSSL_free(cipher);
}
if (cipher == NULL)
return;
CRYPTO_DOWN_REF(&cipher->refcnt, &i, cipher->lock);
if (i > 0)
return;
ossl_provider_free(cipher->prov);
CRYPTO_THREAD_lock_free(cipher->lock);
OPENSSL_free(cipher);
}
int EVP_ASYM_CIPHER_up_ref(EVP_ASYM_CIPHER *cipher)

View File

@ -118,9 +118,7 @@ void EVP_MD_CTX_free(EVP_MD_CTX *ctx)
return;
EVP_MD_CTX_reset(ctx);
OPENSSL_free(ctx);
return;
}
static int evp_md_init_internal(EVP_MD_CTX *ctx, const EVP_MD *type,

View File

@ -68,6 +68,8 @@ EVP_CIPHER_CTX *EVP_CIPHER_CTX_new(void)
void EVP_CIPHER_CTX_free(EVP_CIPHER_CTX *ctx)
{
if (ctx == NULL)
return;
EVP_CIPHER_CTX_reset(ctx);
OPENSSL_free(ctx);
}
@ -1608,7 +1610,7 @@ void EVP_CIPHER_free(EVP_CIPHER *cipher)
{
int i;
if (cipher == NULL)
if (cipher == NULL || cipher->prov == NULL)
return;
CRYPTO_DOWN_REF(&cipher->refcnt, &i, cipher->lock);

View File

@ -62,18 +62,19 @@ static int evp_rand_up_ref(void *vrand)
return 1;
}
static void evp_rand_free(void *vrand){
static void evp_rand_free(void *vrand)
{
EVP_RAND *rand = (EVP_RAND *)vrand;
int ref = 0;
if (rand != NULL) {
CRYPTO_DOWN_REF(&rand->refcnt, &ref, rand->refcnt_lock);
if (ref <= 0) {
ossl_provider_free(rand->prov);
CRYPTO_THREAD_lock_free(rand->refcnt_lock);
OPENSSL_free(rand);
}
}
if (rand == NULL)
return;
CRYPTO_DOWN_REF(&rand->refcnt, &ref, rand->refcnt_lock);
if (ref > 0)
return;
ossl_provider_free(rand->prov);
CRYPTO_THREAD_lock_free(rand->refcnt_lock);
OPENSSL_free(rand);
}
static void *evp_rand_new(void)
@ -369,21 +370,22 @@ EVP_RAND_CTX *EVP_RAND_CTX_new(EVP_RAND *rand, EVP_RAND_CTX *parent)
void EVP_RAND_CTX_free(EVP_RAND_CTX *ctx)
{
if (ctx != NULL) {
int ref = 0;
int ref = 0;
EVP_RAND_CTX *parent;
CRYPTO_DOWN_REF(&ctx->refcnt, &ref, ctx->refcnt_lock);
if (ref <= 0) {
EVP_RAND_CTX *parent = ctx->parent;
if (ctx == NULL)
return;
ctx->meth->freectx(ctx->data);
ctx->data = NULL;
EVP_RAND_free(ctx->meth);
CRYPTO_THREAD_lock_free(ctx->refcnt_lock);
OPENSSL_free(ctx);
EVP_RAND_CTX_free(parent);
}
}
CRYPTO_DOWN_REF(&ctx->refcnt, &ref, ctx->refcnt_lock);
if (ref > 0)
return;
parent = ctx->parent;
ctx->meth->freectx(ctx->data);
ctx->data = NULL;
EVP_RAND_free(ctx->meth);
CRYPTO_THREAD_lock_free(ctx->refcnt_lock);
OPENSSL_free(ctx);
EVP_RAND_CTX_free(parent);
}
EVP_RAND *EVP_RAND_CTX_rand(EVP_RAND_CTX *ctx)

View File

@ -142,16 +142,16 @@ static void *evp_keyexch_from_algorithm(int name_id,
void EVP_KEYEXCH_free(EVP_KEYEXCH *exchange)
{
if (exchange != NULL) {
int i;
int i;
CRYPTO_DOWN_REF(&exchange->refcnt, &i, exchange->lock);
if (i > 0)
return;
ossl_provider_free(exchange->prov);
CRYPTO_THREAD_lock_free(exchange->lock);
OPENSSL_free(exchange);
}
if (exchange == NULL)
return;
CRYPTO_DOWN_REF(&exchange->refcnt, &i, exchange->lock);
if (i > 0)
return;
ossl_provider_free(exchange->prov);
CRYPTO_THREAD_lock_free(exchange->lock);
OPENSSL_free(exchange);
}
int EVP_KEYEXCH_up_ref(EVP_KEYEXCH *exchange)

View File

@ -47,12 +47,12 @@ EVP_KDF_CTX *EVP_KDF_CTX_new(EVP_KDF *kdf)
void EVP_KDF_CTX_free(EVP_KDF_CTX *ctx)
{
if (ctx != NULL) {
ctx->meth->freectx(ctx->data);
ctx->data = NULL;
EVP_KDF_free(ctx->meth);
OPENSSL_free(ctx);
}
if (ctx == NULL)
return;
ctx->meth->freectx(ctx->data);
ctx->data = NULL;
EVP_KDF_free(ctx->meth);
OPENSSL_free(ctx);
}
EVP_KDF_CTX *EVP_KDF_CTX_dup(const EVP_KDF_CTX *src)

View File

@ -25,18 +25,20 @@ static int evp_kdf_up_ref(void *vkdf)
return 1;
}
static void evp_kdf_free(void *vkdf){
static void evp_kdf_free(void *vkdf)
{
EVP_KDF *kdf = (EVP_KDF *)vkdf;
int ref = 0;
if (kdf != NULL) {
CRYPTO_DOWN_REF(&kdf->refcnt, &ref, kdf->lock);
if (ref <= 0) {
ossl_provider_free(kdf->prov);
CRYPTO_THREAD_lock_free(kdf->lock);
OPENSSL_free(kdf);
}
}
if (kdf == NULL)
return;
CRYPTO_DOWN_REF(&kdf->refcnt, &ref, kdf->lock);
if (ref > 0)
return;
ossl_provider_free(kdf->prov);
CRYPTO_THREAD_lock_free(kdf->lock);
OPENSSL_free(kdf);
}
static void *evp_kdf_new(void)

View File

@ -299,16 +299,17 @@ static void *evp_kem_from_algorithm(int name_id, const OSSL_ALGORITHM *algodef,
void EVP_KEM_free(EVP_KEM *kem)
{
if (kem != NULL) {
int i;
int i;
CRYPTO_DOWN_REF(&kem->refcnt, &i, kem->lock);
if (i > 0)
return;
ossl_provider_free(kem->prov);
CRYPTO_THREAD_lock_free(kem->lock);
OPENSSL_free(kem);
}
if (kem == NULL)
return;
CRYPTO_DOWN_REF(&kem->refcnt, &i, kem->lock);
if (i > 0)
return;
ossl_provider_free(kem->prov);
CRYPTO_THREAD_lock_free(kem->lock);
OPENSSL_free(kem);
}
int EVP_KEM_up_ref(EVP_KEM *kem)

View File

@ -39,12 +39,12 @@ EVP_MAC_CTX *EVP_MAC_CTX_new(EVP_MAC *mac)
void EVP_MAC_CTX_free(EVP_MAC_CTX *ctx)
{
if (ctx != NULL) {
ctx->meth->freectx(ctx->data);
ctx->data = NULL;
/* refcnt-- */
EVP_MAC_free(ctx->meth);
}
if (ctx == NULL)
return;
ctx->meth->freectx(ctx->data);
ctx->data = NULL;
/* refcnt-- */
EVP_MAC_free(ctx->meth);
OPENSSL_free(ctx);
}

View File

@ -275,16 +275,16 @@ static void *evp_signature_from_algorithm(int name_id,
void EVP_SIGNATURE_free(EVP_SIGNATURE *signature)
{
if (signature != NULL) {
int i;
int i;
CRYPTO_DOWN_REF(&signature->refcnt, &i, signature->lock);
if (i > 0)
return;
ossl_provider_free(signature->prov);
CRYPTO_THREAD_lock_free(signature->lock);
OPENSSL_free(signature);
}
if (signature == NULL)
return;
CRYPTO_DOWN_REF(&signature->refcnt, &i, signature->lock);
if (i > 0)
return;
ossl_provider_free(signature->prov);
CRYPTO_THREAD_lock_free(signature->lock);
OPENSSL_free(signature);
}
int EVP_SIGNATURE_up_ref(EVP_SIGNATURE *signature)