diff options
Diffstat (limited to 'crypto/engine/eng_init.c')
-rw-r--r-- | crypto/engine/eng_init.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/crypto/engine/eng_init.c b/crypto/engine/eng_init.c index c51a38dac0..8be7c6fc86 100644 --- a/crypto/engine/eng_init.c +++ b/crypto/engine/eng_init.c @@ -80,7 +80,10 @@ int ENGINE_init(ENGINE *e) ENGINEerr(ENGINE_F_ENGINE_INIT, ERR_R_PASSED_NULL_PARAMETER); return 0; } - CRYPTO_THREAD_run_once(&engine_lock_init, do_engine_lock_init); + if (!RUN_ONCE(&engine_lock_init, do_engine_lock_init)) { + ENGINEerr(ENGINE_F_ENGINE_INIT, ERR_R_MALLOC_FAILURE); + return 0; + } CRYPTO_THREAD_write_lock(global_engine_lock); ret = engine_unlocked_init(e); CRYPTO_THREAD_unlock(global_engine_lock); |