From 7e66e9c97bf270b551ab40ae84078a37a8a05586 Mon Sep 17 00:00:00 2001 From: Cory Fields Date: Tue, 14 Jul 2015 17:38:03 -0400 Subject: [PATCH] openssl: avoid config file load/race Rebased-From: d4b1d5a8baf18e4c8d62846360c0c1c0c9331d70 Github-Pull: #6438 --- src/util.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/util.cpp b/src/util.cpp index 3316c172a..d789e05ec 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -78,6 +78,7 @@ #include #include #include +#include // Work around clang compilation problem in Boost 1.46: // /usr/include/boost/program_options/detail/config_file.hpp:163:17: error: call to function 'to_internal' that is neither visible in the template definition nor found by argument-dependent lookup @@ -128,6 +129,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 OpenSSL PRNG with current contents of the screen RAND_screen();