]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Use autoconf check for BN_GENCB_new()
authorAram Sargsyan <aram@isc.org>
Fri, 25 Feb 2022 09:00:52 +0000 (09:00 +0000)
committerAram Sargsyan <aram@isc.org>
Wed, 2 Mar 2022 09:34:29 +0000 (09:34 +0000)
BIND unconditionally uses shims for BN_GENCB_new(), BN_GENCB_free(),
and BN_GENCB_get_arg() for all LibreSSL versions and, correctly, for
OpenSSL <1.1.0 versions.

This breaks LibreSSL compilation starting with LibreSSL 3.5.0.

Use autoconf check instead to check whether the family of the functions
are available.

(cherry picked from commit 749973f3259b7638a6af02b7da2f40ae28bdd402)

config.h.in
config.h.win32
configure
configure.ac
lib/dns/dst_openssl.h
lib/dns/openssldh_link.c
lib/dns/opensslrsa_link.c

index a612225addb700ad5d65185ba7dff4b8eda8f541..350cad433328b784f4e927abacb4ea4d5571cd9d 100644 (file)
@@ -51,6 +51,9 @@
 /* Define to 1 if you have the `BIO_write_ex' function. */
 #undef HAVE_BIO_WRITE_EX
 
+/* Define to 1 if you have the `BN_GENCB_new' function. */
+#undef HAVE_BN_GENCB_NEW
+
 /* Define to 1 if the compiler supports __builtin_clz. */
 #undef HAVE_BUILTIN_CLZ
 
index e07ff8f09ba6c118aa55d963419e920dbaffbe00..a29762789d113663bdeee85782f33f026b0ed2f2 100644 (file)
@@ -373,6 +373,9 @@ typedef __int64 off_t;
 /* Define to 1 if you have the `BIO_write_ex' function. */
 #define HAVE_BIO_WRITE_EX 1
 
+/* Define to 1 if you have the `BN_GENCB_new' function. */
+#define HAVE_BN_GENCB_NEW 1
+
 /* Define to 1 if you have the `OPENSSL_init_crypto' function. */
 #define HAVE_OPENSSL_INIT_CRYPTO 1
 
index dd02d596582407d7bd47fcc12ace4f6241051824..bdbf2fc6da050b81a37d01489eb96f4f9ea6e20a 100755 (executable)
--- a/configure
+++ b/configure
@@ -17045,6 +17045,17 @@ _ACEOF
 fi
 done
 
+for ac_func in BN_GENCB_new
+do :
+  ac_fn_c_check_func "$LINENO" "BN_GENCB_new" "ac_cv_func_BN_GENCB_new"
+if test "x$ac_cv_func_BN_GENCB_new" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_BN_GENCB_NEW 1
+_ACEOF
+
+fi
+done
+
 for ac_func in SSL_CTX_up_ref
 do :
   ac_fn_c_check_func "$LINENO" "SSL_CTX_up_ref" "ac_cv_func_SSL_CTX_up_ref"
index 19506a7eeb65133f8a29d8a8030b105c09223c79..b4165f00c75aace536c672bfc965dd7f4ae801f0 100644 (file)
@@ -848,6 +848,7 @@ AC_CHECK_FUNCS([EVP_MD_CTX_new EVP_MD_CTX_free EVP_MD_CTX_reset])
 AC_CHECK_FUNCS([HMAC_CTX_new HMAC_CTX_free HMAC_CTX_reset HMAC_CTX_get_md])
 AC_CHECK_FUNCS([SSL_read_ex SSL_peek_ex SSL_write_ex])
 AC_CHECK_FUNCS([BIO_read_ex BIO_write_ex])
+AC_CHECK_FUNCS([BN_GENCB_new])
 AC_CHECK_FUNCS([SSL_CTX_up_ref])
 AC_CHECK_FUNCS([SSL_CTX_set_min_proto_version])
 
index dd67e1dd80efb6ddb0be6c7e7ab3fcfaec9a3c66..57278486c103d21a3c1c1005e01bf1a864833c09 100644 (file)
 #include <isc/log.h>
 #include <isc/result.h>
 
-#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+#if !HAVE_BN_GENCB_NEW
 /*
  * 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:
  *
- * #if OPENSSL_VERSION_NUMBER < 0x10100000L
+ * #if !HAVE_BN_GENCB_NEW
  *              _cb;
  * #endif
  */
 #define BN_GENCB_free(x)    ((void)0)
 #define BN_GENCB_new()     (&_cb)
 #define BN_GENCB_get_arg(x) ((x)->arg)
-#endif /* if OPENSSL_VERSION_NUMBER < 0x10100000L || \
-       * defined(LIBRESSL_VERSION_NUMBER) */
+#endif /* !HAVE_BN_GENCB_NEW */
 
 #if OPENSSL_VERSION_NUMBER >= 0x10100000L
 /*
index 876c078d84c276510b5ca8fe8c18376832341d6b..707b35568283aca5180266dae2df9628cf4885a8 100644 (file)
@@ -263,10 +263,9 @@ static isc_result_t
 openssldh_generate(dst_key_t *key, int generator, void (*callback)(int)) {
        DH *dh = NULL;
        BN_GENCB *cb;
-#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+#if !HAVE_BN_GENCB_NEW
        BN_GENCB _cb;
-#endif /* if OPENSSL_VERSION_NUMBER < 0x10100000L || \
-       * defined(LIBRESSL_VERSION_NUMBER) */
+#endif /* !HAVE_BN_GENCB_NEW */
        union {
                void *dptr;
                void (*fptr)(int);
index 73fe4452eaa9dda23b37840e5b57fad2c8b12461..1d29d944328c10a1f0379063cf0cead5896bc9f4 100644 (file)
@@ -453,10 +453,9 @@ 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 || defined(LIBRESSL_VERSION_NUMBER)
+#if !HAVE_BN_GENCB_NEW
        BN_GENCB _cb;
-#endif /* if OPENSSL_VERSION_NUMBER < 0x10100000L || \
-       * defined(LIBRESSL_VERSION_NUMBER) */
+#endif /* !HAVE_BN_GENCB_NEW */
        BN_GENCB *cb = BN_GENCB_new();
        EVP_PKEY *pkey = EVP_PKEY_new();