From: Olivier Houchard Date: Thu, 18 Apr 2019 13:58:15 +0000 (+0200) Subject: BUILD/medium: ssl: Fix build with OpenSSL < 1.1.0 X-Git-Tag: v2.0-dev3~220 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=66a7b3302a47a444172bb68b37adca1e778f8d19;p=thirdparty%2Fhaproxy.git BUILD/medium: ssl: Fix build with OpenSSL < 1.1.0 Make sure it builds with OpenSSL < 1.1.0, a lot of the BIO_get/set methods were introduced with OpenSSL 1.1.0, so fallback with the old way of doing things if needed. --- diff --git a/src/ssl_sock.c b/src/ssl_sock.c index 30876e2ea7..112520c82a 100644 --- a/src/ssl_sock.c +++ b/src/ssl_sock.c @@ -261,7 +261,11 @@ static int ha_ssl_write(BIO *h, const char *buf, int num) struct ssl_sock_ctx *ctx; int ret; +#if OPENSSL_VERSION_NUMBER < 0x10100000 + ctx = h->ptr; +#else ctx = BIO_get_data(h); +#endif tmpbuf.size = num; tmpbuf.area = (void *)(uintptr_t)buf; tmpbuf.data = num; @@ -290,7 +294,11 @@ static int ha_ssl_read(BIO *h, char *buf, int size) struct ssl_sock_ctx *ctx; int ret; +#if OPENSSL_VERSION_NUMBER < 0x10100000 + ctx = h->ptr; +#else ctx = BIO_get_data(h); +#endif tmpbuf.size = size; tmpbuf.area = buf; tmpbuf.data = 0; @@ -316,8 +324,13 @@ static long ha_ssl_ctrl(BIO *h, int cmd, long arg1, void *arg2) static int ha_ssl_new(BIO *h) { +#if OPENSSL_VERSION_NUMBER < 0x10100000L + h->init = 1; + h->ptr = NULL; +#else BIO_set_init(h, 1); BIO_set_data(h, NULL); +#endif BIO_clear_flags(h, ~0); return 1; } @@ -9840,7 +9853,7 @@ static void __ssl_sock_init(void) ERR_load_SSL_strings(); #if OPENSSL_VERSION_NUMBER < 0x10100000L ha_meth = malloc(sizeof(*ha_meth)); - bzero(ha_meth, sizeof(*ha_metho)); + bzero(ha_meth, sizeof(*ha_meth)); ha_meth->bwrite = ha_ssl_write; ha_meth->bread = ha_ssl_read; ha_meth->ctrl = ha_ssl_ctrl;