mirror of
https://github.com/openssl/openssl.git
synced 2024-11-27 05:21:51 +08:00
Make sure we take the ctx->lock in ossl_lib_ctx_generic_new()
The function ossl_lib_ctx_generic_new() modifies the exdata. This may be simultaneously being modified by other threads and therefore we need to make sure we take the lock before doing so. Reviewed-by: Tomas Mraz <tmraz@fedoraproject.org> (Merged from https://github.com/openssl/openssl/pull/13660)
This commit is contained in:
parent
c25a1524aa
commit
2c40421440
@ -228,10 +228,14 @@ static void ossl_lib_ctx_generic_new(void *parent_ign, void *ptr_ign,
|
||||
long argl_ign, void *argp)
|
||||
{
|
||||
const OSSL_LIB_CTX_METHOD *meth = argp;
|
||||
void *ptr = meth->new_func(crypto_ex_data_get_ossl_lib_ctx(ad));
|
||||
OSSL_LIB_CTX *ctx = crypto_ex_data_get_ossl_lib_ctx(ad);
|
||||
void *ptr = meth->new_func(ctx);
|
||||
|
||||
if (ptr != NULL)
|
||||
if (ptr != NULL) {
|
||||
CRYPTO_THREAD_write_lock(ctx->lock);
|
||||
CRYPTO_set_ex_data(ad, index, ptr);
|
||||
CRYPTO_THREAD_unlock(ctx->lock);
|
||||
}
|
||||
}
|
||||
static void ossl_lib_ctx_generic_free(void *parent_ign, void *ptr,
|
||||
CRYPTO_EX_DATA *ad, int index,
|
||||
|
Loading…
Reference in New Issue
Block a user