| From f824c65d1fb6a2490b03228e63cc43dae6844f73 Mon Sep 17 00:00:00 2001 |
| From: Mark Andrews <marka@isc.org> |
| Date: Mon, 19 Oct 2015 10:43:58 +1100 |
| Subject: [PATCH] 4340. [port] Fix LibreSSL compatibility. [RT |
| #40977] |
| |
| Status: upstream git |
| |
| Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> |
| --- |
| lib/dns/dst_openssl.h | 2 +- |
| lib/dns/openssl_link.c | 8 ++++---- |
| lib/dns/openssldh_link.c | 4 ++-- |
| lib/dns/openssldsa_link.c | 4 ++-- |
| lib/dns/opensslrsa_link.c | 2 +- |
| |
| diff --git a/lib/dns/dst_openssl.h b/lib/dns/dst_openssl.h |
| index dd67405..12f8bfc 100644 |
| --- a/lib/dns/dst_openssl.h |
| +++ b/lib/dns/dst_openssl.h |
| @@ -36,7 +36,7 @@ |
| #define USE_ENGINE 1 |
| #endif |
| |
| -#if OPENSSL_VERSION_NUMBER < 0x10100000L |
| +#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) |
| /* |
| * These are new in OpenSSL 1.1.0. BN_GENCB _cb needs to be declared in |
| * the function like this before the BN_GENCB_new call: |
| diff --git a/lib/dns/openssl_link.c b/lib/dns/openssl_link.c |
| index 8683bee..6a52b31 100644 |
| --- a/lib/dns/openssl_link.c |
| +++ b/lib/dns/openssl_link.c |
| @@ -88,7 +88,7 @@ entropy_getpseudo(unsigned char *buf, int num) { |
| return (result == ISC_R_SUCCESS ? 1 : -1); |
| } |
| |
| -#if OPENSSL_VERSION_NUMBER < 0x10100000L |
| +#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) |
| static void |
| entropy_add(const void *buf, int num, double entropy) { |
| /* |
| @@ -121,7 +121,7 @@ lock_callback(int mode, int type, const char *file, int line) { |
| UNLOCK(&locks[type]); |
| } |
| |
| -#if OPENSSL_VERSION_NUMBER < 0x10100000L |
| +#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) |
| static unsigned long |
| id_callback(void) { |
| return ((unsigned long)isc_thread_self()); |
| @@ -187,7 +187,7 @@ dst__openssl_init(const char *engine) { |
| if (result != ISC_R_SUCCESS) |
| goto cleanup_mutexalloc; |
| CRYPTO_set_locking_callback(lock_callback); |
| -#if OPENSSL_VERSION_NUMBER < 0x10100000L |
| +#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) |
| CRYPTO_set_id_callback(id_callback); |
| #endif |
| |
| @@ -287,7 +287,7 @@ dst__openssl_destroy(void) { |
| CRYPTO_cleanup_all_ex_data(); |
| #endif |
| ERR_clear_error(); |
| -#if OPENSSL_VERSION_NUMBER < 0x10100000L |
| +#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) |
| ERR_remove_state(0); |
| #endif |
| ERR_free_strings(); |
| diff --git a/lib/dns/openssldh_link.c b/lib/dns/openssldh_link.c |
| index 9f42219..67fbf69 100644 |
| --- a/lib/dns/openssldh_link.c |
| +++ b/lib/dns/openssldh_link.c |
| @@ -173,7 +173,7 @@ openssldh_generate(dst_key_t *key, int generator, void (*callback)(int)) { |
| DH *dh = NULL; |
| #if OPENSSL_VERSION_NUMBER > 0x00908000L |
| BN_GENCB *cb; |
| -#if OPENSSL_VERSION_NUMBER < 0x10100000L |
| +#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) |
| BN_GENCB _cb; |
| #endif |
| union { |
| @@ -210,7 +210,7 @@ openssldh_generate(dst_key_t *key, int generator, void (*callback)(int)) { |
| if (dh == NULL) |
| return (dst__openssl_toresult(ISC_R_NOMEMORY)); |
| cb = BN_GENCB_new(); |
| -#if OPENSSL_VERSION_NUMBER >= 0x10100000L |
| +#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) |
| if (cb == NULL) { |
| DH_free(dh); |
| return (dst__openssl_toresult(ISC_R_NOMEMORY)); |
| diff --git a/lib/dns/openssldsa_link.c b/lib/dns/openssldsa_link.c |
| index 963e2f5..d47b265 100644 |
| --- a/lib/dns/openssldsa_link.c |
| +++ b/lib/dns/openssldsa_link.c |
| @@ -359,7 +359,7 @@ openssldsa_generate(dst_key_t *key, int unused, void (*callback)(int)) { |
| isc_result_t result; |
| #if OPENSSL_VERSION_NUMBER > 0x00908000L |
| BN_GENCB *cb; |
| -#if OPENSSL_VERSION_NUMBER < 0x10100000L |
| +#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) |
| BN_GENCB _cb; |
| #endif |
| union { |
| @@ -383,7 +383,7 @@ openssldsa_generate(dst_key_t *key, int unused, void (*callback)(int)) { |
| if (dsa == NULL) |
| return (dst__openssl_toresult(DST_R_OPENSSLFAILURE)); |
| cb = BN_GENCB_new(); |
| -#if OPENSSL_VERSION_NUMBER >= 0x10100000L |
| +#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) |
| if (cb == NULL) { |
| DSA_free(dsa); |
| return (dst__openssl_toresult(DST_R_OPENSSLFAILURE)); |
| diff --git a/lib/dns/opensslrsa_link.c b/lib/dns/opensslrsa_link.c |
| index 94aced2..d799be0 100644 |
| --- a/lib/dns/opensslrsa_link.c |
| +++ b/lib/dns/opensslrsa_link.c |
| @@ -771,7 +771,7 @@ opensslrsa_generate(dst_key_t *key, int exp, void (*callback)(int)) { |
| } u; |
| RSA *rsa = RSA_new(); |
| BIGNUM *e = BN_new(); |
| -#if OPENSSL_VERSION_NUMBER < 0x10100000L |
| +#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) |
| BN_GENCB _cb; |
| #endif |
| BN_GENCB *cb = BN_GENCB_new(); |
| -- |
| 2.4.10 |
| |