BUG #14309: SSL_get_current_compression magic from port.h breaks compile against OpenSSL 1.1.0

From: noloader(at)gmail(dot)com
To: pgsql-bugs(at)postgresql(dot)org
Subject: BUG #14309: SSL_get_current_compression magic from port.h breaks compile against OpenSSL 1.1.0
Date: 2016-09-04 04:45:59
Message-ID: 20160904044559.1411.98981@wrigleys.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

The following bug has been logged on the website:

Bug reference: 14309
Logged by: Jeffrey Walton
Email address: noloader(at)gmail(dot)com
PostgreSQL version: Unsupported/Unknown
Operating system: OS X
Description:

I'm working from Master (6591f4226c81104f7746). I'm also using OpenSSL
1.1.0.

gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement
-Wendif-labels -Wmissing-format-attribute -Wformat-security
-fno-strict-aliasing -fwrapv -Wno-unused-command-line-argument
-I/usr/local/ssl/include -L/usr/local/ssl/lib -I../../../../src/include
-I/usr/local/ssl/include -c -o printtup.o printtup.c
In file included from printtup.c:19:
In file included from ../../../../src/include/libpq/libpq.h:21:
In file included from ../../../../src/include/libpq/libpq-be.h:25:
/usr/local/ssl/include/openssl/ssl.h:1777:27: error: expected identifier or
'('
__owur const COMP_METHOD *SSL_get_current_compression(SSL *s);
^
../../../../src/include/port.h:418:40: note: expanded from macro
'SSL_get_current_compression'
#define SSL_get_current_compression(x) 0
^
1 error generated.
<builtin>: recipe for target 'printtup.o' failed
make[4]: *** [printtup.o] Error 1

*****

It looks like port.h does this:

#ifndef HAVE_SSL_GET_CURRENT_COMPRESSION
#define SSL_get_current_compression(x) 0
#endif

I could be mistaken, but SSL_get_current_compression is an OpenSSL symbol.
Postgres should not be doing anything with OpenSSL symbols other than using
them.

*****

Here are the various configure's.

OpenSSL:

$ ./Configure darwin64-x86_64-cc shared enable-ec_nistp_64_gcc_128 no-ssl2
no-ssl3 no-comp --openssldir=/usr/local/ssl --prefix=/usr/local/ssl

Postgres:

$ ./configure --with-openssl --with-includes=/usr/local/ssl/include
--with-libraries=/usr/local/ssl/lib

*****

Here's what <openssl/ssl.h> looks like:

...
__owur const COMP_METHOD *SSL_get_current_compression(SSL *s);
__owur const COMP_METHOD *SSL_get_current_expansion(SSL *s);
__owur const char *SSL_COMP_get_name(const COMP_METHOD *comp);
STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(void);
__owur STACK_OF(SSL_COMP)
*SSL_COMP_set0_compression_methods(STACK_OF(SSL_COMP)
*meths);
#if OPENSSL_API_COMPAT < 0x10100000L
# define SSL_COMP_free_compression_methods() while(0) continue
#endif
__owur int SSL_COMP_add_compression_method(int id, COMP_METHOD *cm);
...
#endif

Browse pgsql-bugs by date

  From Date Subject
Next Message iurii.i.popov 2016-09-05 09:30:26 BUG #14310: Triggers do not fire
Previous Message Michael Paquier 2016-09-04 04:44:27 Re: BUG #14308: Postgres 9.5.4 does not configure against OpenSSL 1.1.0