aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Eisentraut <peter@eisentraut.org>2020-07-19 12:14:42 +0200
committerMichael Paquier <michael@paquier.xyz>2023-06-24 20:26:56 +0900
commit265c9138da58ae6d37dc5324e51d6fc782fe8923 (patch)
treeedf63cb48bf464057f80ad017144ef38d39b02d3
parent4f8f0f8c397ee855caed36c7994b2450b11278b1 (diff)
downloadpostgresql-265c9138da58ae6d37dc5324e51d6fc782fe8923.tar.gz
postgresql-265c9138da58ae6d37dc5324e51d6fc782fe8923.zip
Define OPENSSL_API_COMPAT
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
-rwxr-xr-xconfigure6
-rw-r--r--configure.in3
-rw-r--r--src/include/pg_config.h.in4
-rw-r--r--src/include/pg_config.h.win324
-rw-r--r--src/tools/msvc/Solution.pm10
5 files changed, 25 insertions, 2 deletions
diff --git a/configure b/configure
index f96450308d9..ba8c26bd6e6 100755
--- a/configure
+++ b/configure
@@ -12405,7 +12405,11 @@ fi
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 :
diff --git a/configure.in b/configure.in
index f568a0eaecd..23d9ad28048 100644
--- a/configure.in
+++ b/configure.in
@@ -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])])
diff --git a/src/include/pg_config.h.in b/src/include/pg_config.h.in
index d42f78b1172..457a8713cc2 100644
--- a/src/include/pg_config.h.in
+++ b/src/include/pg_config.h.in
@@ -808,6 +808,10 @@
/* 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
diff --git a/src/include/pg_config.h.win32 b/src/include/pg_config.h.win32
index de0eb00b917..268aa1c77df 100644
--- a/src/include/pg_config.h.win32
+++ b/src/include/pg_config.h.win32
@@ -641,6 +641,10 @@
/* 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"
diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm
index 04e417901f9..20ce233af48 100644
--- a/src/tools/msvc/Solution.pm
+++ b/src/tools/msvc/Solution.pm
@@ -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();