From: Mark Andrews Date: Tue, 18 Feb 2003 06:24:45 +0000 (+0000) Subject: pullup: X-Git-Tag: v9.2.2~7 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=948fe3eebb6360fad56e84447a88a84ad1594e57;p=thirdparty%2Fbind9.git pullup: 1395. [port] OpenSSL 0.9.7 defines CRYPTO_LOCK_ENGINE but doesn't have a working implementation. [RT #4079] --- diff --git a/CHANGES b/CHANGES index 8a25f34b0fb..20c79761c06 100644 --- a/CHANGES +++ b/CHANGES @@ -6,6 +6,9 @@ 1426. [cleanup] Disable RFC2535 style DNSSEC. This is incompatible with the forthcoming DS style DNSSEC. +1395. [port] OpenSSL 0.9.7 defines CRYPTO_LOCK_ENGINE but doesn't + have a working implementation. [RT #4079] + 1382. [bug] make install failed with --enable-libbind. [RT #3656] 1381. [bug] named failed to correctly process answers that diff --git a/lib/dns/sec/dst/openssl_link.c b/lib/dns/sec/dst/openssl_link.c index 5df661e902e..adb784bae06 100644 --- a/lib/dns/sec/dst/openssl_link.c +++ b/lib/dns/sec/dst/openssl_link.c @@ -19,7 +19,7 @@ /* * Principal Author: Brian Wellington - * $Id: openssl_link.c,v 1.46 2001/07/31 03:45:04 marka Exp $ + * $Id: openssl_link.c,v 1.46.8.1 2003/02/18 06:24:45 marka Exp $ */ #ifdef OPENSSL @@ -38,7 +38,11 @@ #include #include -#ifdef CRYPTO_LOCK_ENGINE +#if defined(CRYPTO_LOCK_ENGINE) && (OPENSSL_VERSION_NUMBER < 0x00907000L) +#define USE_ENGINE 1 +#endif + +#ifdef USE_ENGINE #include #endif @@ -46,7 +50,7 @@ static RAND_METHOD *rm = NULL; static isc_mutex_t *locks = NULL; static int nlocks; -#ifdef CRYPTO_LOCK_ENGINE +#ifdef USE_ENGINE static ENGINE *e; #endif @@ -120,7 +124,7 @@ dst__openssl_init() { rm->add = entropy_add; rm->pseudorand = entropy_getpseudo; rm->status = NULL; -#ifdef CRYPTO_LOCK_ENGINE +#ifdef USE_ENGINE e = ENGINE_new(); if (e == NULL) { result = ISC_R_NOMEMORY; @@ -133,7 +137,7 @@ dst__openssl_init() { #endif return (ISC_R_SUCCESS); -#ifdef CRYPTO_LOCK_ENGINE +#ifdef USE_ENGINE cleanup_rm: dst__mem_free(rm); #endif @@ -146,6 +150,12 @@ dst__openssl_init() { void dst__openssl_destroy() { +#ifdef USE_ENGINE + if (e != NULL) { + ENGINE_free(e); + e = NULL; + } +#endif if (locks != NULL) { RUNTIME_CHECK(isc_mutexblock_destroy(locks, nlocks) == ISC_R_SUCCESS);