From a303a6ee32ebc04eb261db780f1e968f58d6e260 Mon Sep 17 00:00:00 2001 From: svost Date: Sun, 21 Feb 2016 17:56:03 +0300 Subject: [PATCH] openssl: avoid config file load/race (see bitcoin d4b1d5a) --- src/util.cpp | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-) diff --git a/src/util.cpp b/src/util.cpp index 73621d8..0f84938 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -31,6 +31,7 @@ namespace boost { #include #include #include +#include #ifdef WIN32 #ifdef _MSC_VER @@ -127,6 +128,13 @@ public: ppmutexOpenSSL[i] = new CCriticalSection(); CRYPTO_set_locking_callback(locking_callback); + // OpenSSL can optionally load a config file which lists optional loadable modules and engines. + // We don't use them so we don't require the config. However some of our libs may call functions + // which attempt to load the config file, possibly resulting in an exit() or crash if it is missing + // or corrupt. Explicitly tell OpenSSL not to try to load the file. The result for our libs will be + // that the config appears to have been loaded and there are no modules/engines available. + OPENSSL_no_config(); + #ifdef WIN32 // Seed random number generator with screen scrape and other hardware sources RAND_screen(); -- 1.7.1