From: Pauli Date: Sun, 16 May 2021 23:33:10 +0000 (+1000) Subject: provider: fix coverity 1484884: uninitialised lock use X-Git-Tag: openssl-3.0.0-alpha17~79 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=634da876e0d6d95a23c5d005b1ac4354a04310d2;p=thirdparty%2Fopenssl.git provider: fix coverity 1484884: uninitialised lock use This actually fixes a more subtle problem that wasn't detected which could cause memory leaks. Reviewed-by: Tomas Mraz Reviewed-by: Shane Lontis (Merged from https://github.com/openssl/openssl/pull/15300) --- diff --git a/crypto/provider_core.c b/crypto/provider_core.c index b384f74fd24..9d5248de0dc 100644 --- a/crypto/provider_core.c +++ b/crypto/provider_core.c @@ -306,7 +306,6 @@ static OSSL_PROVIDER *provider_new(const char *name, #ifndef HAVE_ATOMICS || (prov->refcnt_lock = CRYPTO_THREAD_lock_new()) == NULL #endif - || !ossl_provider_up_ref(prov) /* +1 One reference to be returned */ || (prov->opbits_lock = CRYPTO_THREAD_lock_new()) == NULL || (prov->flag_lock = CRYPTO_THREAD_lock_new()) == NULL || (prov->name = OPENSSL_strdup(name)) == NULL) { @@ -315,6 +314,7 @@ static OSSL_PROVIDER *provider_new(const char *name, return NULL; } + prov->refcnt = 1; /* 1 One reference to be returned */ prov->init_function = init_function; #ifndef FIPS_MODULE prov->flag_couldbechild = 1;