diff options
Diffstat (limited to 'ssl/ssl_init.c')
-rw-r--r-- | ssl/ssl_init.c | 64 |
1 files changed, 5 insertions, 59 deletions
diff --git a/ssl/ssl_init.c b/ssl/ssl_init.c index db0234d7a423..2a879bdc7851 100644 --- a/ssl/ssl_init.c +++ b/ssl/ssl_init.c @@ -1,5 +1,5 @@ /* - * Copyright 2016-2022 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2016-2025 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the Apache License 2.0 (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy @@ -7,20 +7,18 @@ * https://www.openssl.org/source/license.html */ -#include "e_os.h" +#include "internal/e_os.h" #include "internal/err.h" #include <openssl/crypto.h> #include <openssl/evp.h> #include <openssl/trace.h> #include "ssl_local.h" -#include "sslerr.h" #include "internal/thread_once.h" +#include "internal/rio_notifier.h" /* for ossl_wsa_cleanup() */ static int stopped; -static void ssl_library_stop(void); - static CRYPTO_ONCE ssl_base = CRYPTO_ONCE_STATIC_INIT; static int ssl_base_inited = 0; DEFINE_RUN_ONCE_STATIC(ossl_init_ssl_base) @@ -35,60 +33,17 @@ DEFINE_RUN_ONCE_STATIC(ossl_init_ssl_base) SSL_COMP_get_compression_methods(); #endif ssl_sort_cipher_list(); - OSSL_TRACE(INIT,"ossl_init_ssl_base: SSL_add_ssl_module()\n"); - /* - * We ignore an error return here. Not much we can do - but not that bad - * either. We can still safely continue. - */ - OPENSSL_atexit(ssl_library_stop); + OSSL_TRACE(INIT, "ossl_init_ssl_base: SSL_add_ssl_module()\n"); ssl_base_inited = 1; return 1; } -static CRYPTO_ONCE ssl_strings = CRYPTO_ONCE_STATIC_INIT; - -DEFINE_RUN_ONCE_STATIC(ossl_init_load_ssl_strings) -{ - /* - * 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) - OSSL_TRACE(INIT, "ossl_init_load_ssl_strings: ossl_err_load_SSL_strings()\n"); - ossl_err_load_SSL_strings(); -#endif - return 1; -} - -DEFINE_RUN_ONCE_STATIC_ALT(ossl_init_no_load_ssl_strings, - ossl_init_load_ssl_strings) -{ - /* Do nothing in this case */ - return 1; -} - -static void ssl_library_stop(void) -{ - /* Might be explicitly called and also by atexit */ - if (stopped) - return; - stopped = 1; - - if (ssl_base_inited) { -#ifndef OPENSSL_NO_COMP - OSSL_TRACE(INIT, "ssl_library_stop: " - "ssl_comp_free_compression_methods_int()\n"); - ssl_comp_free_compression_methods_int(); -#endif - } -} - /* * If this function is called with a non NULL settings value then it must be * called prior to any threads making calls to any OpenSSL functions, * i.e. passing a non-null settings value is assumed to be single-threaded. */ -int OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS * settings) +int OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings) { static int stoperrset = 0; @@ -118,14 +73,5 @@ int OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS * settings) if (!RUN_ONCE(&ssl_base, ossl_init_ssl_base)) return 0; - if ((opts & OPENSSL_INIT_NO_LOAD_SSL_STRINGS) - && !RUN_ONCE_ALT(&ssl_strings, ossl_init_no_load_ssl_strings, - ossl_init_load_ssl_strings)) - return 0; - - if ((opts & OPENSSL_INIT_LOAD_SSL_STRINGS) - && !RUN_ONCE(&ssl_strings, ossl_init_load_ssl_strings)) - return 0; - return 1; } |