From: Matt Caswell Date: Tue, 9 Feb 2016 10:55:21 +0000 (+0000) Subject: Avoid a race condition in loading config settings X-Git-Tag: OpenSSL_1_1_0-pre3~170 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=bf24111bb2cf37b609fecdbe81660ecfd460e998;p=oweals%2Fopenssl.git Avoid a race condition in loading config settings A race condition can occur when sending config settings to OPENSSL_INIT_crypto_library_start() Reviewed-by: Richard Levitte --- diff --git a/crypto/init.c b/crypto/init.c index bce8438b95..1bfde6973c 100644 --- a/crypto/init.c +++ b/crypto/init.c @@ -679,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) {