]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Define OPENSSL_API_COMPAT
authorPeter Eisentraut <peter@eisentraut.org>
Sun, 19 Jul 2020 10:14:42 +0000 (12:14 +0200)
committerMichael Paquier <michael@paquier.xyz>
Sat, 24 Jun 2023 11:26:56 +0000 (20:26 +0900)
This avoids deprecation warnings from newer OpenSSL versions (3.0.0 in
particular).

This has been originally applied as 4d3db13 for v14 and newer versions,
but not on the older branches out of caution, and this commit closes the
gap to remove all these deprecation warnings in all the branches still
supported.

OPENSSL_API_COMPAT's value is set based on the oldest version of OpenSSL
supported on a branch: 1.0.1 for Postgres 13 and 0.9.8 for Postgres 11
and 12.

Reviewed-by: Daniel Gustafsson
Discussion: https://postgr.es/m/FEF81714-D479-4512-839B-C769D2605F8A@yesql.se
Discussion: https://postgr.es/m/ZJJmOH+hIOSoesux@paquier.xyz
Backpatch-through: 11

configure
configure.in
src/include/pg_config.h.in
src/include/pg_config.h.win32
src/tools/msvc/Solution.pm

index f96450308d9976b275422f0b1d09fedbbde87371..ba8c26bd6e65a02f987b1caf89524dac111ab87b 100755 (executable)
--- a/configure
+++ b/configure
 fi
 
 if test "$with_openssl" = yes ; then
-    if test "$PORTNAME" != "win32"; then
+    # Minimum required OpenSSL version is 0.9.8
+
+$as_echo "#define OPENSSL_API_COMPAT 0x00908000L" >>confdefs.h
+
+  if test "$PORTNAME" != "win32"; then
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CRYPTO_new_ex_data in -lcrypto" >&5
 $as_echo_n "checking for CRYPTO_new_ex_data in -lcrypto... " >&6; }
 if ${ac_cv_lib_crypto_CRYPTO_new_ex_data+:} false; then :
index f568a0eaecd76475824118c3da2b97b4ff8ff5b2..23d9ad28048af5a13d79ed75405b3f534ebba2cb 100644 (file)
@@ -1274,6 +1274,9 @@ fi
 
 if test "$with_openssl" = yes ; then
   dnl Order matters!
+  # Minimum required OpenSSL version is 0.9.8
+  AC_DEFINE(OPENSSL_API_COMPAT, [0x00908000L],
+            [Define to the OpenSSL API version in use. This avoids deprecation warnings from newer OpenSSL versions.])
   if test "$PORTNAME" != "win32"; then
      AC_CHECK_LIB(crypto, CRYPTO_new_ex_data, [], [AC_MSG_ERROR([library 'crypto' is required for OpenSSL])])
      AC_CHECK_LIB(ssl,    SSL_new, [], [AC_MSG_ERROR([library 'ssl' is required for OpenSSL])])
index d42f78b11725ed691bdb51523a2eb33db22b47fd..457a8713cc242c9d16f2fc0f787efa4501ba2c75 100644 (file)
 /* Define bytes to use libc memset(). */
 #undef MEMSET_LOOP_LIMIT
 
+/* Define to the OpenSSL API version in use. This avoids deprecation warnings
+   from newer OpenSSL versions. */
+#undef OPENSSL_API_COMPAT
+
 /* Define to the address where bug reports for this package should be sent. */
 #undef PACKAGE_BUGREPORT
 
index de0eb00b9178299a5991723acfc32aed88f6116e..268aa1c77dffb3d6491561e2be895e443317741b 100644 (file)
 /* Define bytes to use libc memset(). */
 #define MEMSET_LOOP_LIMIT 1024
 
+/* Define to the OpenSSL API version in use. This avoids deprecation warnings
+   from newer OpenSSL versions. */
+#define OPENSSL_API_COMPAT 0x00908000L
+
 /* Define to the address where bug reports for this package should be sent. */
 #define PACKAGE_BUGREPORT "pgsql-bugs@lists.postgresql.org"
 
index 04e417901f9aeac490be3e530a853a1946462d8c..20ce233af48dda4ab29b5d8fe35086f2a87b420e 100644 (file)
@@ -147,6 +147,8 @@ sub GenerateFiles
 {
        my $self = shift;
        my $bits = $self->{platform} eq 'Win32' ? 32 : 64;
+       my $openssl_api_compat;
+       my $ac_define_openssl_api_compat_found = 0;
 
        # Parse configure.in to get version numbers
        open(my $c, '<', "configure.in")
@@ -163,10 +165,15 @@ sub GenerateFiles
                        $self->{numver} = sprintf("%d%04d", $1, $2 ? $2 : 0);
                        $self->{majorver} = sprintf("%d", $1);
                }
+               elsif (/\bAC_DEFINE\(OPENSSL_API_COMPAT, \[([0-9xL]+)\]/)
+               {
+                       $ac_define_openssl_api_compat_found = 1;
+                       $openssl_api_compat = $1;
+               }
        }
        close($c);
        confess "Unable to parse configure.in for all variables!"
-         if ($self->{strver} eq '' || $self->{numver} eq '');
+         if ($self->{strver} eq '' || $self->{numver} eq '' || $ac_define_openssl_api_compat_found == 0);
 
        if (IsNewer("src/include/pg_config_os.h", "src/include/port/win32.h"))
        {
@@ -250,6 +257,7 @@ sub GenerateFiles
                if ($self->{options}->{openssl})
                {
                        print $o "#define USE_OPENSSL 1\n";
+                       print $o "#define OPENSSL_API_COMPAT $openssl_api_compat\n";
 
                        my ($digit1, $digit2, $digit3) = $self->GetOpenSSLVersion();