diff options
| author | beck <> | 2018-03-19 03:35:38 +0000 |
|---|---|---|
| committer | beck <> | 2018-03-19 03:35:38 +0000 |
| commit | 02fd65d9fc788d4e8e18c251840f300031577d70 (patch) | |
| tree | c2587bdba8d5d81576ed1d6536ed36f021b869cf /src/lib/libcrypto/conf/conf_sap.c | |
| parent | ed245d2c282aafe5e3349f16ecc45562fa1c61cf (diff) | |
| download | openbsd-02fd65d9fc788d4e8e18c251840f300031577d70.tar.gz openbsd-02fd65d9fc788d4e8e18c251840f300031577d70.tar.bz2 openbsd-02fd65d9fc788d4e8e18c251840f300031577d70.zip | |
Correct mistake of loading the default openssl.conf by default during autoinit.
This brings in the OPENSSL_INIT_LOAD_CONFIG flag with the same semantics as
OpenSSL. As a result, by default the openssl.conf file is not loaded during
autoinit, which makes autoinit safe for pledge(stdio).
ok jsing@
Diffstat (limited to 'src/lib/libcrypto/conf/conf_sap.c')
| -rw-r--r-- | src/lib/libcrypto/conf/conf_sap.c | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/src/lib/libcrypto/conf/conf_sap.c b/src/lib/libcrypto/conf/conf_sap.c index f1844f69f4..98497025ee 100644 --- a/src/lib/libcrypto/conf/conf_sap.c +++ b/src/lib/libcrypto/conf/conf_sap.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: conf_sap.c,v 1.12 2018/03/17 16:20:01 beck Exp $ */ | 1 | /* $OpenBSD: conf_sap.c,v 1.13 2018/03/19 03:35:38 beck Exp $ */ |
| 2 | /* Written by Stephen Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Stephen Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project 2001. | 3 | * project 2001. |
| 4 | */ | 4 | */ |
| @@ -108,8 +108,8 @@ OPENSSL_config_internal(void) | |||
| 108 | return; | 108 | return; |
| 109 | } | 109 | } |
| 110 | 110 | ||
| 111 | void | 111 | int |
| 112 | OPENSSL_config(const char *config_name) | 112 | OpenSSL_config(const char *config_name) |
| 113 | { | 113 | { |
| 114 | /* Don't override if NULL */ | 114 | /* Don't override if NULL */ |
| 115 | /* | 115 | /* |
| @@ -120,11 +120,19 @@ OPENSSL_config(const char *config_name) | |||
| 120 | if (config_name != NULL) | 120 | if (config_name != NULL) |
| 121 | openssl_config_name = config_name; | 121 | openssl_config_name = config_name; |
| 122 | 122 | ||
| 123 | (void) OPENSSL_init_crypto(0, NULL); | 123 | if (OPENSSL_init_crypto(0, NULL) == 0) |
| 124 | return 0; | ||
| 124 | 125 | ||
| 125 | (void) pthread_once(&openssl_configured, OPENSSL_config_internal); | 126 | if (pthread_once(&openssl_configured, OPENSSL_config_internal) != 0) |
| 127 | return 0; | ||
| 126 | 128 | ||
| 127 | return; | 129 | return 1; |
| 130 | } | ||
| 131 | |||
| 132 | void | ||
| 133 | OPENSSL_config(const char *config_name) | ||
| 134 | { | ||
| 135 | (void) OpenSSL_config(config_name); | ||
| 128 | } | 136 | } |
| 129 | 137 | ||
| 130 | static void | 138 | static void |
| @@ -132,8 +140,17 @@ OPENSSL_no_config_internal(void) | |||
| 132 | { | 140 | { |
| 133 | } | 141 | } |
| 134 | 142 | ||
| 143 | int | ||
| 144 | OpenSSL_no_config(void) | ||
| 145 | { | ||
| 146 | if (pthread_once(&openssl_configured, OPENSSL_no_config_internal) != 0) | ||
| 147 | return 0; | ||
| 148 | |||
| 149 | return 1; | ||
| 150 | } | ||
| 151 | |||
| 135 | void | 152 | void |
| 136 | OPENSSL_no_config(void) | 153 | OPENSSL_no_config(void) |
| 137 | { | 154 | { |
| 138 | (void) pthread_once(&openssl_configured, OPENSSL_no_config_internal); | 155 | (void) OpenSSL_no_config(); |
| 139 | } | 156 | } |
