X-Git-Url: https://git.openssl.org/gitweb/?a=blobdiff_plain;f=crypto%2Fevp%2Fevp_enc.c;h=6b6d65163f9cc1e53baee4adf756dcdde41cc9ba;hb=6be83ac172aac93b49ae0b847fd5ac9de6ab3ff5;hp=3187ba35c997d185075cb8e8ca8966d3d9fccefe;hpb=a903a132a4256d34f20cb2f7636247b41fd85965;p=openssl.git diff --git a/crypto/evp/evp_enc.c b/crypto/evp/evp_enc.c index 3187ba35c9..6b6d65163f 100644 --- a/crypto/evp/evp_enc.c +++ b/crypto/evp/evp_enc.c @@ -1483,13 +1483,9 @@ EVP_CIPHER *evp_cipher_new(void) { EVP_CIPHER *cipher = OPENSSL_zalloc(sizeof(EVP_CIPHER)); - if (cipher != NULL) { - cipher->lock = CRYPTO_THREAD_lock_new(); - if (cipher->lock == NULL) { - OPENSSL_free(cipher); - return NULL; - } - cipher->refcnt = 1; + if (cipher != NULL && !CRYPTO_NEW_REF(&cipher->refcnt, 1)) { + OPENSSL_free(cipher); + return NULL; } return cipher; } @@ -1689,7 +1685,7 @@ int EVP_CIPHER_up_ref(EVP_CIPHER *cipher) int ref = 0; if (cipher->origin == EVP_ORIG_DYNAMIC) - CRYPTO_UP_REF(&cipher->refcnt, &ref, cipher->lock); + CRYPTO_UP_REF(&cipher->refcnt, &ref); return 1; } @@ -1697,7 +1693,7 @@ void evp_cipher_free_int(EVP_CIPHER *cipher) { OPENSSL_free(cipher->type_name); ossl_provider_free(cipher->prov); - CRYPTO_THREAD_lock_free(cipher->lock); + CRYPTO_FREE_REF(&cipher->refcnt); OPENSSL_free(cipher); } @@ -1708,7 +1704,7 @@ void EVP_CIPHER_free(EVP_CIPHER *cipher) if (cipher == NULL || cipher->origin != EVP_ORIG_DYNAMIC) return; - CRYPTO_DOWN_REF(&cipher->refcnt, &i, cipher->lock); + CRYPTO_DOWN_REF(&cipher->refcnt, &i); if (i > 0) return; evp_cipher_free_int(cipher);