summaryrefslogtreecommitdiffstats
path: root/crypto/x509/v3_addr.c
diff options
context:
space:
mode:
authorOleg Bulatov <oleg@bulatov.me>2024-04-10 00:17:35 +0200
committerTomas Mraz <tomas@openssl.org>2024-04-11 10:08:00 +0200
commitd3de76dca4f9967f1f746048ffab819319c057fb (patch)
tree0225ff332c5d52d7797f0806fef5155e495e8d79 /crypto/x509/v3_addr.c
parentf43f1fadbfc5a45463766527f38310df8e3d28be (diff)
crypto/provider_core.c: Allocate activatecnt_lock
CRYPTO_atomic_add has a lock as a parameter, which is often ignored, but in some cases (for example, when BROKEN_CLANG_ATOMICS is defined) it is required. There is no easy way to determine if the lock is needed or not. The current logic looks like this: if defined(OPENSSL_THREADS) && !defined(CRYPTO_TDEBUG) && !defined(OPENSSL_SYS_WINDOWS) if defined(__GNUC__) && defined(__ATOMIC_ACQ_REL) && !defined(BROKEN_CLANG_ATOMICS) - It works without the lock, but in general the need for the lock depends on __atomic_is_lock_free results elif defined(__sun) && (defined(__SunOS_5_10) || defined(__SunOS_5_11)) - The lock is not needed (unless ret is NULL, which should never happen?) else - The lock is required endif else - The lock is not needed endif Adding such conditions outside of crypto.h is error-prone, so it is better to always allocate the lock, otherwise CRYPTO_atomic_add may silently fail. Fixes #23376. CLA: trivial Fixes: fc570b2605 ("Avoid taking a write lock in ossl_provider_doall_activated()") Signed-off-by: Oleg Bulatov <oleg@bulatov.me> Reviewed-by: Tim Hudson <tjh@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/24081) (cherry picked from commit 2fd6c12e85ec7558cbdee08033f822c42ee0f5d4)
Diffstat (limited to 'crypto/x509/v3_addr.c')
0 files changed, 0 insertions, 0 deletions