dovecot: Fix compilation with OpenSSL 1.1
authorRosen Penev <rosenp@gmail.com>
Thu, 14 Feb 2019 02:57:57 +0000 (18:57 -0800)
committerRosen Penev <rosenp@gmail.com>
Thu, 14 Feb 2019 02:57:57 +0000 (18:57 -0800)
Signed-off-by: Rosen Penev <rosenp@gmail.com>
mail/dovecot/Makefile
mail/dovecot/patches/100-openssl-deprecated.patch
mail/dovecot/patches/110-openssl-engine.patch

index bbfc2b80a490054f8b9646e40ccad7905d4cd483..5d7bb771393a28c505a4784417ee0a1eb2112731 100644 (file)
@@ -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
index 529413f63f849d25bdc1c5ac3873befc6d3dacd2..ecb00a77bf5a8a220f09c0db19324de47fabc770 100644 (file)
@@ -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 @@
index 164ec4ef1f277b32c6f50e6558bb6d72c86c2f4d..9859c7328be32310774b92af6c1c2a57c3bc8a74 100644 (file)
@@ -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;
  
                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;
        }