From: onexyoung Date: Mon, 23 Dec 2024 11:49:27 +0000 (+0300) Subject: provider_deactivate(): Check return value of CRYPTO_atomic_add() X-Git-Tag: openssl-3.5.0-alpha1~731 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8fb6c8154b552d0d7d8f160e7a6260f899b94263;p=thirdparty%2Fopenssl.git provider_deactivate(): Check return value of CRYPTO_atomic_add() Reviewed-by: Matt Caswell Reviewed-by: Tomas Mraz (Merged from https://github.com/openssl/openssl/pull/26249) --- diff --git a/crypto/provider_core.c b/crypto/provider_core.c index 1b16b279059..6b2a98524d7 100644 --- a/crypto/provider_core.c +++ b/crypto/provider_core.c @@ -1111,7 +1111,14 @@ static int provider_deactivate(OSSL_PROVIDER *prov, int upcalls, return -1; } - CRYPTO_atomic_add(&prov->activatecnt, -1, &count, prov->activatecnt_lock); + if (!CRYPTO_atomic_add(&prov->activatecnt, -1, &count, prov->activatecnt_lock)) { + if (lock) { + CRYPTO_THREAD_unlock(prov->flag_lock); + CRYPTO_THREAD_unlock(store->lock); + } + return -1; + } + #ifndef FIPS_MODULE if (count >= 1 && prov->ischild && upcalls) { /*