From 05c39b5dde16d9674d2550e964e8aa4b6e10b981 Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Wed, 13 Feb 2019 18:57:57 -0800 Subject: [PATCH] dovecot: Fix compilation with OpenSSL 1.1 Signed-off-by: Rosen Penev --- mail/dovecot/Makefile | 2 +- .../patches/100-openssl-deprecated.patch | 22 +++++++++++++++---- mail/dovecot/patches/110-openssl-engine.patch | 9 ++++---- 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/mail/dovecot/Makefile b/mail/dovecot/Makefile index bbfc2b80a..5d7bb7713 100644 --- a/mail/dovecot/Makefile +++ b/mail/dovecot/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=dovecot PKG_VERSION:=2.3.4.1 -PKG_RELEASE:=1 +PKG_RELEASE:=2 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://www.dovecot.org/releases/2.3 diff --git a/mail/dovecot/patches/100-openssl-deprecated.patch b/mail/dovecot/patches/100-openssl-deprecated.patch index 529413f63..ecb00a77b 100644 --- a/mail/dovecot/patches/100-openssl-deprecated.patch +++ b/mail/dovecot/patches/100-openssl-deprecated.patch @@ -1,5 +1,3 @@ -diff --git a/src/lib-dcrypt/dcrypt-openssl.c b/src/lib-dcrypt/dcrypt-openssl.c -index c2dbd30..201ab40 100644 --- a/src/lib-dcrypt/dcrypt-openssl.c +++ b/src/lib-dcrypt/dcrypt-openssl.c @@ -20,6 +20,7 @@ @@ -10,8 +8,24 @@ index c2dbd30..201ab40 100644 #include "dcrypt.h" #include "dcrypt-private.h" -diff --git a/src/lib-ssl-iostream/iostream-openssl-context.c b/src/lib-ssl-iostream/iostream-openssl-context.c -index e3c902e..ad6a9c1 100644 +--- a/src/lib-ssl-iostream/dovecot-openssl-common.c ++++ b/src/lib-ssl-iostream/dovecot-openssl-common.c +@@ -79,6 +79,7 @@ bool dovecot_openssl_common_global_unref(void) + ENGINE_finish(dovecot_openssl_engine); + dovecot_openssl_engine = NULL; + } ++#if OPENSSL_VERSION_NUMBER < 0x10100000L + /* OBJ_cleanup() is called automatically by EVP_cleanup() in + newer versions. Doesn't hurt to call it anyway. */ + OBJ_cleanup(); +@@ -100,6 +101,7 @@ bool dovecot_openssl_common_global_unref(void) + ERR_free_strings(); + #ifdef HAVE_OPENSSL_CLEANUP + OPENSSL_cleanup(); ++#endif + #endif + return FALSE; + } --- a/src/lib-ssl-iostream/iostream-openssl-context.c +++ b/src/lib-ssl-iostream/iostream-openssl-context.c @@ -6,6 +6,9 @@ diff --git a/mail/dovecot/patches/110-openssl-engine.patch b/mail/dovecot/patches/110-openssl-engine.patch index 164ec4ef1..9859c7328 100644 --- a/mail/dovecot/patches/110-openssl-engine.patch +++ b/mail/dovecot/patches/110-openssl-engine.patch @@ -47,7 +47,7 @@ #ifdef HAVE_SSL_NEW_MEM_FUNCS static void *dovecot_openssl_malloc(size_t size, const char *u0 ATTR_UNUSED, int u1 ATTR_UNUSED) -@@ -75,17 +78,21 @@ bool dovecot_openssl_common_global_unref(void) +@@ -75,10 +78,12 @@ bool dovecot_openssl_common_global_unref(void) if (--openssl_init_refcount > 0) return TRUE; @@ -57,9 +57,10 @@ dovecot_openssl_engine = NULL; } +#endif + #if OPENSSL_VERSION_NUMBER < 0x10100000L /* OBJ_cleanup() is called automatically by EVP_cleanup() in newer versions. Doesn't hurt to call it anyway. */ - OBJ_cleanup(); +@@ -86,7 +91,9 @@ bool dovecot_openssl_common_global_unref(void) #ifdef HAVE_SSL_COMP_FREE_COMPRESSION_METHODS SSL_COMP_free_compression_methods(); #endif @@ -69,7 +70,7 @@ EVP_cleanup(); CRYPTO_cleanup_all_ex_data(); #ifdef HAVE_OPENSSL_AUTO_THREAD_DEINIT -@@ -107,6 +114,7 @@ bool dovecot_openssl_common_global_unref(void) +@@ -109,6 +116,7 @@ bool dovecot_openssl_common_global_unref(void) int dovecot_openssl_common_global_set_engine(const char *engine, const char **error_r) { @@ -77,7 +78,7 @@ if (dovecot_openssl_engine != NULL) return 1; -@@ -128,5 +136,6 @@ int dovecot_openssl_common_global_set_engine(const char *engine, +@@ -130,5 +138,6 @@ int dovecot_openssl_common_global_set_engine(const char *engine, dovecot_openssl_engine = NULL; return -1; }