From 9fcd066217e8b6f52b601bdd8a0cb6455f98b88c Mon Sep 17 00:00:00 2001 From: Petr Mensik Date: Thu, 7 Mar 2019 14:33:28 +0100 Subject: [PATCH] Do not replace random generator on single thread DHCP builds fails to initialize dst library entropy generator. It does not require it for anything. Instead of initializing it, skip replacing custom random generator in single thread builds. Should use OpenSSL default random generator in case of SSL. Related: rhbz#1685940 --- lib/dns/openssl_link.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/dns/openssl_link.c b/lib/dns/openssl_link.c index ec6dc7f..ca3ffbc 100644 --- a/lib/dns/openssl_link.c +++ b/lib/dns/openssl_link.c @@ -31,6 +31,7 @@ #include #include #include +#include #include #include #include @@ -220,6 +221,7 @@ dst__openssl_init(const char *engine) { ERR_load_crypto_strings(); #endif +#ifdef ISC_PLATFORM_USETHREADS rm = mem_alloc(sizeof(RAND_METHOD) FILELINE); if (rm == NULL) { result = ISC_R_NOMEMORY; @@ -231,6 +233,7 @@ dst__openssl_init(const char *engine) { rm->add = entropy_add; rm->pseudorand = entropy_getpseudo; rm->status = entropy_status; +#endif #if !defined(OPENSSL_NO_ENGINE) #if !defined(CONF_MFLAGS_DEFAULT_SECTION) @@ -264,6 +267,7 @@ dst__openssl_init(const char *engine) { } } +#ifdef ISC_PLATFORM_USETHREADS re = ENGINE_get_default_RAND(); if (re == NULL) { re = ENGINE_new(); @@ -276,6 +280,7 @@ dst__openssl_init(const char *engine) { ENGINE_free(re); } else ENGINE_finish(re); +#endif #else RAND_set_rand_method(rm); #endif /* !defined(OPENSSL_NO_ENGINE) */ @@ -286,7 +291,8 @@ dst__openssl_init(const char *engine) { if (e != NULL) ENGINE_free(e); e = NULL; - mem_free(rm FILELINE); + if (rm != NULL) + mem_free(rm FILELINE); rm = NULL; #endif cleanup_mutexinit: -- 2.20.1