diff options
| author | Wladimir J. van der Laan <[email protected]> | 2015-07-15 15:49:36 +0200 |
|---|---|---|
| committer | Wladimir J. van der Laan <[email protected]> | 2015-07-15 15:49:45 +0200 |
| commit | ed789ceade71f19f04340a4041d7d3ef43c44086 (patch) | |
| tree | 6915f80cdb25fd713000c898603a2d08723ef0a4 /src/util.cpp | |
| parent | Merge pull request #6440 (diff) | |
| parent | openssl: avoid config file load/race (diff) | |
| download | discoin-ed789ceade71f19f04340a4041d7d3ef43c44086.tar.xz discoin-ed789ceade71f19f04340a4041d7d3ef43c44086.zip | |
Merge pull request #6438
d4b1d5a openssl: avoid config file load/race (Cory Fields)
Diffstat (limited to 'src/util.cpp')
| -rw-r--r-- | src/util.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/util.cpp b/src/util.cpp index bb7df2320..00d0f3a00 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -83,6 +83,7 @@ #include <boost/thread.hpp> #include <openssl/crypto.h> #include <openssl/rand.h> +#include <openssl/conf.h> // 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 @@ -134,6 +135,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(); |