mirror of https://github.com/openssl/openssl.git
Return NULL from ossl_lib_ctx_get_concrete() when it is uninitialized
When default_context_inited is set to false we return NULL instead of
the global default context.
Fixes #25442
Reviewed-by: Tom Cosgrove <tom.cosgrove@arm.com>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/26319)
(cherry picked from commit dfce0d7418)
This commit is contained in:
parent
61db4145df
commit
61217d142c
|
|
@ -48,17 +48,23 @@ struct ossl_lib_ctx_st {
|
|||
|
||||
int ossl_lib_ctx_write_lock(OSSL_LIB_CTX *ctx)
|
||||
{
|
||||
return CRYPTO_THREAD_write_lock(ossl_lib_ctx_get_concrete(ctx)->lock);
|
||||
if ((ctx = ossl_lib_ctx_get_concrete(ctx)) == NULL)
|
||||
return 0;
|
||||
return CRYPTO_THREAD_write_lock(ctx->lock);
|
||||
}
|
||||
|
||||
int ossl_lib_ctx_read_lock(OSSL_LIB_CTX *ctx)
|
||||
{
|
||||
return CRYPTO_THREAD_read_lock(ossl_lib_ctx_get_concrete(ctx)->lock);
|
||||
if ((ctx = ossl_lib_ctx_get_concrete(ctx)) == NULL)
|
||||
return 0;
|
||||
return CRYPTO_THREAD_read_lock(ctx->lock);
|
||||
}
|
||||
|
||||
int ossl_lib_ctx_unlock(OSSL_LIB_CTX *ctx)
|
||||
{
|
||||
return CRYPTO_THREAD_unlock(ossl_lib_ctx_get_concrete(ctx)->lock);
|
||||
if ((ctx = ossl_lib_ctx_get_concrete(ctx)) == NULL)
|
||||
return 0;
|
||||
return CRYPTO_THREAD_unlock(ctx->lock);
|
||||
}
|
||||
|
||||
int ossl_lib_ctx_is_child(OSSL_LIB_CTX *ctx)
|
||||
|
|
@ -372,7 +378,7 @@ static OSSL_LIB_CTX *get_default_context(void)
|
|||
{
|
||||
OSSL_LIB_CTX *current_defctx = get_thread_default_context();
|
||||
|
||||
if (current_defctx == NULL)
|
||||
if (current_defctx == NULL && default_context_inited)
|
||||
current_defctx = &default_context_int;
|
||||
return current_defctx;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -756,6 +756,9 @@ EVP_RAND_CTX *RAND_get0_public(OSSL_LIB_CTX *ctx)
|
|||
return NULL;
|
||||
|
||||
ctx = ossl_lib_ctx_get_concrete(ctx);
|
||||
|
||||
if (ctx == NULL)
|
||||
return NULL;
|
||||
/*
|
||||
* If the private is also NULL then this is the first time we've
|
||||
* used this thread.
|
||||
|
|
@ -789,6 +792,9 @@ EVP_RAND_CTX *RAND_get0_private(OSSL_LIB_CTX *ctx)
|
|||
return NULL;
|
||||
|
||||
ctx = ossl_lib_ctx_get_concrete(ctx);
|
||||
|
||||
if (ctx == NULL)
|
||||
return NULL;
|
||||
/*
|
||||
* If the public is also NULL then this is the first time we've
|
||||
* used this thread.
|
||||
|
|
|
|||
Loading…
Reference in New Issue