mirror of
https://github.com/openssl/openssl.git
synced 2025-03-31 20:10:45 +08:00
Use OPENSSL_init_crypto(OPENSSL_INIT_BASE_ONLY, NULL) in libcrypto
Calling OPENSSL_init_crypto(0, NULL) is a no-op and will not properly initialize thread local handling. Only the calls that are needed to initialize thread locals are kept, the rest of the no-op calls are removed. Reviewed-by: Paul Dale <pauli@openssl.org> Reviewed-by: Matt Caswell <matt@openssl.org> (Merged from https://github.com/openssl/openssl/pull/14497)
This commit is contained in:
parent
343475126e
commit
12b4e5821d
@ -616,8 +616,6 @@ static int addrinfo_wrap(int family, int socktype,
|
||||
|
||||
DEFINE_RUN_ONCE_STATIC(do_bio_lookup_init)
|
||||
{
|
||||
if (!OPENSSL_init_crypto(0, NULL))
|
||||
return 0;
|
||||
bio_lookup_lock = CRYPTO_THREAD_lock_new();
|
||||
return bio_lookup_lock != NULL;
|
||||
}
|
||||
|
@ -20,8 +20,6 @@ CRYPTO_ONCE engine_lock_init = CRYPTO_ONCE_STATIC_INIT;
|
||||
|
||||
DEFINE_RUN_ONCE(do_engine_lock_init)
|
||||
{
|
||||
if (!OPENSSL_init_crypto(0, NULL))
|
||||
return 0;
|
||||
global_engine_lock = CRYPTO_THREAD_lock_new();
|
||||
return global_engine_lock != NULL;
|
||||
}
|
||||
|
@ -197,7 +197,7 @@ static void ERR_STATE_free(ERR_STATE *s)
|
||||
|
||||
DEFINE_RUN_ONCE_STATIC(do_err_strings_init)
|
||||
{
|
||||
if (!OPENSSL_init_crypto(0, NULL))
|
||||
if (!OPENSSL_init_crypto(OPENSSL_INIT_BASE_ONLY, NULL))
|
||||
return 0;
|
||||
err_string_lock = CRYPTO_THREAD_lock_new();
|
||||
if (err_string_lock == NULL)
|
||||
|
@ -429,7 +429,7 @@ static void *rand_ossl_ctx_new(OSSL_LIB_CTX *libctx)
|
||||
* We need to ensure that base libcrypto thread handling has been
|
||||
* initialised.
|
||||
*/
|
||||
OPENSSL_init_crypto(0, NULL);
|
||||
OPENSSL_init_crypto(OPENSSL_INIT_BASE_ONLY, NULL);
|
||||
#endif
|
||||
|
||||
dgbl->lock = CRYPTO_THREAD_lock_new();
|
||||
|
@ -7,25 +7,9 @@
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
#include <openssl/err.h>
|
||||
#include "crypto/store.h"
|
||||
#include "store_local.h"
|
||||
|
||||
static CRYPTO_ONCE store_init = CRYPTO_ONCE_STATIC_INIT;
|
||||
DEFINE_RUN_ONCE_STATIC(do_store_init)
|
||||
{
|
||||
return OPENSSL_init_crypto(0, NULL);
|
||||
}
|
||||
|
||||
int ossl_store_init_once(void)
|
||||
{
|
||||
if (!RUN_ONCE(&store_init, do_store_init)) {
|
||||
ERR_raise(ERR_LIB_OSSL_STORE, ERR_R_MALLOC_FAILURE);
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
void ossl_store_cleanup_int(void)
|
||||
{
|
||||
ossl_store_destroy_loaders_int();
|
||||
|
@ -152,13 +152,6 @@ struct ossl_store_ctx_st {
|
||||
struct ossl_passphrase_data_st pwdata;
|
||||
};
|
||||
|
||||
/*-
|
||||
* OSSL_STORE init stuff
|
||||
* ---------------------
|
||||
*/
|
||||
|
||||
int ossl_store_init_once(void);
|
||||
|
||||
/*-
|
||||
* 'file' scheme stuff
|
||||
* -------------------
|
||||
|
@ -207,8 +207,6 @@ int ossl_store_register_loader_int(OSSL_STORE_LOADER *loader)
|
||||
}
|
||||
int OSSL_STORE_register_loader(OSSL_STORE_LOADER *loader)
|
||||
{
|
||||
if (!ossl_store_init_once())
|
||||
return 0;
|
||||
return ossl_store_register_loader_int(loader);
|
||||
}
|
||||
|
||||
@ -224,9 +222,6 @@ const OSSL_STORE_LOADER *ossl_store_get0_loader_int(const char *scheme)
|
||||
template.close = NULL;
|
||||
template.open_ex = NULL;
|
||||
|
||||
if (!ossl_store_init_once())
|
||||
return NULL;
|
||||
|
||||
if (!RUN_ONCE(®istry_init, do_registry_init)) {
|
||||
ERR_raise(ERR_LIB_OSSL_STORE, ERR_R_MALLOC_FAILURE);
|
||||
return NULL;
|
||||
@ -275,8 +270,6 @@ OSSL_STORE_LOADER *ossl_store_unregister_loader_int(const char *scheme)
|
||||
}
|
||||
OSSL_STORE_LOADER *OSSL_STORE_unregister_loader(const char *scheme)
|
||||
{
|
||||
if (!ossl_store_init_once())
|
||||
return 0;
|
||||
return ossl_store_unregister_loader_int(scheme);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user