summaryrefslogtreecommitdiffstats
path: root/crypto/ex_data.c
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/ex_data.c')
-rw-r--r--crypto/ex_data.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/crypto/ex_data.c b/crypto/ex_data.c
index 291e5a6498..da5b5b69ba 100644
--- a/crypto/ex_data.c
+++ b/crypto/ex_data.c
@@ -43,7 +43,8 @@ static EX_CALLBACKS *get_and_lock(OSSL_EX_DATA_GLOBAL *global, int class_index)
return NULL;
}
- CRYPTO_THREAD_write_lock(global->ex_data_lock);
+ if (!CRYPTO_THREAD_write_lock(global->ex_data_lock))
+ return NULL;
ip = &global->ex_data[class_index];
return ip;
}
@@ -367,7 +368,8 @@ void CRYPTO_free_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad)
if (storage != NULL)
f = storage[i];
else {
- CRYPTO_THREAD_write_lock(global->ex_data_lock);
+ if (!CRYPTO_THREAD_write_lock(global->ex_data_lock))
+ continue;
f = sk_EX_CALLBACK_value(ip->meth, i);
CRYPTO_THREAD_unlock(global->ex_data_lock);
}