]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
4676. [cleanup] Allow BIND to be built using OpenSSL 1.0.X with
authorMark Andrews <marka@isc.org>
Thu, 10 Aug 2017 00:16:26 +0000 (10:16 +1000)
committerMark Andrews <marka@isc.org>
Thu, 10 Aug 2017 00:16:26 +0000 (10:16 +1000)
                        deprecated functions removed. [RT #45706]

CHANGES
lib/dns/openssl_link.c

diff --git a/CHANGES b/CHANGES
index c455ca95798f3a4f1fb84de761e9db059eff5ae5..0b20a7479a5c7580535517ec5ec4999d1ca7319a 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+4676.  [cleanup]       Allow BIND to be built using OpenSSL 1.0.X with
+                       deprecated functions removed. [RT #45706]
+
 4675.  [cleanup]       Don't use C++ keyword class. [RT #45726]
 
 4674.   [func]          "dig +sigchase", and related options "+topdown" and
index 88e7921d468e34d2e4280b5bdc24220c3e47a957..c0578d307724b1580afb24dddb1feddfc798fdb6 100644 (file)
@@ -104,7 +104,7 @@ entropy_add(const void *buf, int num, double entropy) {
 }
 #endif
 
-#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+#if OPENSSL_VERSION_NUMBER >= 0x10000000L && OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
 static void
 lock_callback(int mode, int type, const char *file, int line) {
        UNUSED(file);
@@ -114,7 +114,9 @@ lock_callback(int mode, int type, const char *file, int line) {
        else
                UNLOCK(&locks[type]);
 }
+#endif
 
+#if OPENSSL_VERSION_NUMBER < 0x10000000L
 static unsigned long
 id_callback(void) {
        return ((unsigned long)isc_thread_self());
@@ -178,6 +180,14 @@ mem_realloc(void *ptr, size_t size FLARG) {
 #endif
 }
 
+#if OPENSSL_VERSION_NUMBER >= 0x10000000L && OPENSSL_VERSION_NUMBER < 0x10100000L
+static void
+_set_thread_id(CRYPTO_THREADID *id)
+{
+       CRYPTO_THREADID_set_numeric(id, (unsigned long)pthread_self());
+}
+#endif
+
 isc_result_t
 dst__openssl_init(const char *engine) {
        isc_result_t result;
@@ -203,7 +213,11 @@ dst__openssl_init(const char *engine) {
        if (result != ISC_R_SUCCESS)
                goto cleanup_mutexalloc;
        CRYPTO_set_locking_callback(lock_callback);
+# if OPENSSL_VERSION_NUMBER >= 0x10000000L
+       CRYPTO_THREADID_set_callback(_set_thread_id);
+# else
        CRYPTO_set_id_callback(id_callback);
+# endif
 
        ERR_load_crypto_strings();
 #endif
@@ -324,7 +338,9 @@ dst__openssl_destroy(void) {
        CRYPTO_cleanup_all_ex_data();
 #endif
        ERR_clear_error();
-#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+#if OPENSSL_VERSION_NUMBER >= 0x10000000L && OPENSSL_VERSION_NUMBER < 0x10100000L
+       ERR_remove_thread_state(NULL);
+#elif OPENSSL_VERSION_NUMBER < 0x10000000L || defined(LIBRESSL_VERSION_NUMBER)
        ERR_remove_state(0);
 #endif
        ERR_free_strings();