X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=crypto%2Finit.c;h=1bfde6973ceb41c114296ea50f2188f03fc336dd;hp=8950ff679740cbde2165b47e4daf797e529bb3da;hb=bf24111bb2cf37b609fecdbe81660ecfd460e998;hpb=b184e3ef73200cb3b7914a603b43a5b8a074c85f diff --git a/crypto/init.c b/crypto/init.c index 8950ff6797..1bfde6973c 100644 --- a/crypto/init.c +++ b/crypto/init.c @@ -69,21 +69,16 @@ #include #include #include -#if 0 #include #include #include #include -#endif -#include -#include -#include #include -#if 0 #include -#endif #include +static void ossl_init_thread_stop(struct thread_local_inits_st *locals); + /* Implement "once" functionality */ #if !defined(OPENSSL_THREADS) typedef int OPENSSL_INIT_ONCE; @@ -287,14 +282,16 @@ static void ossl_init_no_load_crypto_strings(void) static void ossl_init_load_crypto_strings(void) { -#ifndef OPENSSL_NO_ERR + /* + * OPENSSL_NO_AUTOERRINIT is provided here to prevent at compile time + * pulling in all the error strings during static linking + */ +#if !defined(OPENSSL_NO_ERR) && !defined(OPENSSL_NO_AUTOERRINIT) # ifdef OPENSSL_INIT_DEBUG fprintf(stderr, "OPENSSL_INIT: ossl_init_load_crypto_strings: " "err_load_crypto_strings_intern()\n"); # endif -#if 0 err_load_crypto_strings_intern(); -#endif #endif load_crypto_strings_inited = 1; } @@ -311,9 +308,7 @@ static void ossl_init_add_all_ciphers(void) fprintf(stderr, "OPENSSL_INIT: ossl_init_add_all_ciphers: " "openssl_add_all_ciphers_internal()\n"); # endif -#if 0 openssl_add_all_ciphers_internal(); -#endif # ifndef OPENSSL_NO_ENGINE # if defined(__OpenBSD__) || defined(__FreeBSD__) || defined(HAVE_CRYPTODEV) ENGINE_setup_bsd_cryptodev(); @@ -334,9 +329,7 @@ static void ossl_init_add_all_digests(void) fprintf(stderr, "OPENSSL_INIT: ossl_init_add_all_digests: " "openssl_add_all_digests_internal()\n"); # endif -#if 0 openssl_add_all_digests_internal(); -#endif # ifndef OPENSSL_NO_ENGINE # if defined(__OpenBSD__) || defined(__FreeBSD__) || defined(HAVE_CRYPTODEV) ENGINE_setup_bsd_cryptodev(); @@ -361,9 +354,7 @@ static void ossl_init_config(void) "OPENSSL_INIT: ossl_init_config: openssl_config_internal(%s)\n", config_filename==NULL?"NULL":config_filename); #endif -#if 0 openssl_config_internal(config_filename); -#endif config_inited = 1; } static void ossl_init_no_config(void) @@ -372,9 +363,7 @@ static void ossl_init_no_config(void) fprintf(stderr, "OPENSSL_INIT: ossl_init_config: openssl_no_config_internal()\n"); #endif -#if 0 openssl_no_config_internal(); -#endif config_inited = 1; } @@ -385,9 +374,7 @@ static void ossl_init_async(void) #ifdef OPENSSL_INIT_DEBUG fprintf(stderr, "OPENSSL_INIT: ossl_init_async: async_init()\n"); #endif -#if 0 async_init(); -#endif async_inited = 1; } @@ -400,9 +387,7 @@ static void ossl_init_engine_openssl(void) fprintf(stderr, "OPENSSL_INIT: ossl_init_engine_openssl: " "engine_load_openssl_internal()\n"); # endif -#if 0 engine_load_openssl_internal(); -#endif engine_inited = 1; } # if !defined(OPENSSL_NO_HW) && \ @@ -414,9 +399,7 @@ static void ossl_init_engine_cryptodev(void) fprintf(stderr, "OPENSSL_INIT: ossl_init_engine_cryptodev: " "engine_load_cryptodev_internal()\n"); # endif -#if 0 engine_load_cryptodev_internal(); -#endif engine_inited = 1; } # endif @@ -429,9 +412,7 @@ static void ossl_init_engine_rdrand(void) fprintf(stderr, "OPENSSL_INIT: ossl_init_engine_rdrand: " "engine_load_rdrand_internal()\n"); # endif -#if 0 engine_load_rdrand_internal(); -#endif engine_inited = 1; } # endif @@ -442,9 +423,7 @@ static void ossl_init_engine_dynamic(void) fprintf(stderr, "OPENSSL_INIT: ossl_init_engine_dynamic: " "engine_load_dynamic_internal()\n"); # endif -#if 0 engine_load_dynamic_internal(); -#endif engine_inited = 1; } # ifndef OPENSSL_NO_STATIC_ENGINE @@ -456,9 +435,7 @@ static void ossl_init_engine_padlock(void) fprintf(stderr, "OPENSSL_INIT: ossl_init_engine_padlock: " "engine_load_padlock_internal()\n"); # endif -#if 0 engine_load_padlock_internal(); -#endif engine_inited = 1; } # endif @@ -470,9 +447,7 @@ static void ossl_init_engine_capi(void) fprintf(stderr, "OPENSSL_INIT: ossl_init_engine_capi: " "engine_load_capi_internal()\n"); # endif -#if 0 engine_load_capi_internal(); -#endif engine_inited = 1; } # endif @@ -483,9 +458,7 @@ static void ossl_init_engine_dasync(void) fprintf(stderr, "OPENSSL_INIT: ossl_init_engine_dasync: " "engine_load_dasync_internal()\n"); # endif -#if 0 engine_load_dasync_internal(); -#endif engine_inited = 1; } # endif @@ -499,7 +472,7 @@ static void ossl_init_zlib(void) zlib_inited = 1; } -void ossl_init_thread_stop(struct thread_local_inits_st *locals) +static void ossl_init_thread_stop(struct thread_local_inits_st *locals) { /* Can't do much about this */ if (locals == NULL) @@ -525,6 +498,12 @@ void ossl_init_thread_stop(struct thread_local_inits_st *locals) ossl_init_thread_stop_cleanup(); } +void OPENSSL_INIT_thread_stop(void) +{ + ossl_init_thread_stop( + (struct thread_local_inits_st *)ossl_init_get_thread_local(0)); +} + int ossl_init_thread_start(uint64_t opts) { struct thread_local_inits_st *locals = ossl_init_get_thread_local(1); @@ -700,13 +679,17 @@ void OPENSSL_INIT_crypto_library_start(uint64_t opts, } if (opts & OPENSSL_INIT_LOAD_CONFIG) { + CRYPTO_w_lock(CRYPTO_LOCK_INIT); if (settings != NULL) { const OPENSSL_INIT_SETTINGS *curr; curr = ossl_init_get_setting(settings, OPENSSL_INIT_SET_CONF_FILENAME); - config_filename = curr == NULL ? NULL : curr->value.type_string; + config_filename = (curr == NULL) ? NULL : curr->value.type_string; + } else { + config_filename = NULL; } ossl_init_once_run(&config, ossl_init_config); + CRYPTO_w_unlock(CRYPTO_LOCK_INIT); } if (opts & OPENSSL_INIT_ASYNC) {