opendkim: add patch for openssl 1.1

This commit is contained in:
Robin Gloster 2017-07-14 16:39:08 +02:00
parent f0d704d25f
commit 316fdef769
No known key found for this signature in database
GPG Key ID: D5C458DF6DD97EDF
2 changed files with 85 additions and 2 deletions

View File

@ -1,5 +1,5 @@
{ stdenv, fetchurl, pkgconfig, libbsd, openssl, libmilter { stdenv, fetchurl, pkgconfig, libbsd, openssl, libmilter
, perl, makeWrapper }: , autoreconfHook, perl, makeWrapper }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "opendkim-${version}"; name = "opendkim-${version}";
@ -16,10 +16,12 @@ stdenv.mkDerivation rec {
"ac_cv_func_realloc_0_nonnull=yes" "ac_cv_func_realloc_0_nonnull=yes"
]; ];
nativeBuildInputs = [ pkgconfig makeWrapper ]; nativeBuildInputs = [ autoreconfHook pkgconfig makeWrapper ];
buildInputs = [ libbsd openssl libmilter perl ]; buildInputs = [ libbsd openssl libmilter perl ];
patches = [ ./openssl-1.1.patch ];
postInstall = '' postInstall = ''
wrapProgram $out/sbin/opendkim-genkey \ wrapProgram $out/sbin/opendkim-genkey \
--prefix PATH : ${openssl.bin}/bin --prefix PATH : ${openssl.bin}/bin

View File

@ -0,0 +1,81 @@
--- a/configure.ac
+++ b/configure.ac
@@ -864,26 +864,28 @@
AC_SEARCH_LIBS([ERR_peek_error], [crypto], ,
AC_MSG_ERROR([libcrypto not found]))
- AC_SEARCH_LIBS([SSL_library_init], [ssl], ,
- [
- if test x"$enable_shared" = x"yes"
- then
- AC_MSG_ERROR([Cannot build shared opendkim
- against static openssl libraries.
- Configure with --disable-shared
- to get this working or obtain a
- shared libssl library for
- opendkim to use.])
- fi
-
- # avoid caching issue - last result of SSL_library_init
- # shouldn't be cached for this next check
- unset ac_cv_search_SSL_library_init
- LIBCRYPTO_LIBS="$LIBCRYPTO_LIBS -ldl"
- AC_SEARCH_LIBS([SSL_library_init], [ssl], ,
- AC_MSG_ERROR([libssl not found]), [-ldl])
- ]
- )
+
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM([[#include <openssl/ssl.h>]],
+ [[SSL_library_init();]])],
+ [od_have_ossl="yes";],
+ [od_have_ossl="no";])
+ if test x"$od_have_ossl" = x"no"
+ then
+ if test x"$enable_shared" = x"yes"
+ then
+ AC_MSG_ERROR([Cannot build shared opendkim
+ against static openssl libraries.
+ Configure with --disable-shared
+ to get this working or obtain a
+ shared libssl library for
+ opendkim to use.])
+ fi
+
+ LIBCRYPTO_LIBS="$LIBCRYPTO_LIBS -ldl"
+ AC_SEARCH_LIBS([SSL_library_init], [ssl], ,
+ AC_MSG_ERROR([libssl not found]), [-ldl])
+ fi
AC_CHECK_DECL([SHA256_DIGEST_LENGTH],
AC_DEFINE([HAVE_SHA256], 1,
--- a/opendkim/opendkim-crypto.c
+++ b/opendkim/opendkim-crypto.c
@@ -222,7 +222,11 @@
{
assert(pthread_setspecific(id_key, ptr) == 0);
+#if OPENSSL_VERSION_NUMBER >= 0x10100000
+ OPENSSL_thread_stop();
+#else
ERR_remove_state(0);
+#endif
free(ptr);
@@ -392,11 +396,15 @@
{
if (crypto_init_done)
{
+#if OPENSSL_VERSION_NUMBER >= 0x10100000
+ OPENSSL_thread_stop();
+#else
CRYPTO_cleanup_all_ex_data();
CONF_modules_free();
EVP_cleanup();
ERR_free_strings();
ERR_remove_state(0);
+#endif
if (nmutexes > 0)
{