summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/crypto_init.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/crypto_init.c')
-rw-r--r--src/lib/libcrypto/crypto_init.c28
1 files changed, 25 insertions, 3 deletions
diff --git a/src/lib/libcrypto/crypto_init.c b/src/lib/libcrypto/crypto_init.c
index 931dff73f8..ae4914e358 100644
--- a/src/lib/libcrypto/crypto_init.c
+++ b/src/lib/libcrypto/crypto_init.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: crypto_init.c,v 1.23 2025/05/10 05:54:38 tb Exp $ */ 1/* $OpenBSD: crypto_init.c,v 1.26 2025/06/11 07:41:12 tb Exp $ */
2/* 2/*
3 * Copyright (c) 2018 Bob Beck <beck@openbsd.org> 3 * Copyright (c) 2018 Bob Beck <beck@openbsd.org>
4 * 4 *
@@ -37,6 +37,30 @@ static pthread_once_t crypto_init_once = PTHREAD_ONCE_INIT;
37static pthread_t crypto_init_thread; 37static pthread_t crypto_init_thread;
38static int crypto_init_cleaned_up; 38static int crypto_init_cleaned_up;
39 39
40void openssl_init_crypto_constructor(void) __attribute__((constructor));
41
42#ifndef HAVE_CRYPTO_CPU_CAPS_INIT
43void
44crypto_cpu_caps_init(void)
45{
46}
47#endif
48
49/*
50 * This function is invoked as a constructor when the library is loaded. The
51 * code run from here must not allocate memory or trigger signals. The only
52 * safe code is to read data and update global variables.
53 */
54void
55openssl_init_crypto_constructor(void)
56{
57 crypto_cpu_caps_init();
58}
59
60/*
61 * This is used by various configure scripts to check availability of libcrypto,
62 * so we need to keep it.
63 */
40void 64void
41OPENSSL_init(void) 65OPENSSL_init(void)
42{ 66{
@@ -48,8 +72,6 @@ OPENSSL_init_crypto_internal(void)
48{ 72{
49 crypto_init_thread = pthread_self(); 73 crypto_init_thread = pthread_self();
50 74
51 crypto_cpu_caps_init();
52
53 ERR_load_crypto_strings(); 75 ERR_load_crypto_strings();
54} 76}
55 77