include $(TOPDIR)/rules.mk
PKG_NAME:=exim
-PKG_VERSION:=4.96.2
+PKG_VERSION:=4.97.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://ftp.exim.org/pub/exim/exim4/
-PKG_HASH:=038e327e8d1e93d005bac9bb06fd22aec44d5028930d6dbe8817ad44bbfc1de6
+PKG_HASH:=bd782057509a793593508528590626d185ea160ce32cb34beda262e99cefdfa9
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_LICENSE:=GPL-2.0-or-later
endef
HOST_CFLAGS += -std=c99
-TARGET_CFLAGS += $(FPIC) -DNO_IP_OPTIONS -D_FILE_OFFSET_BITS=64
+TARGET_CFLAGS += $(FPIC) -DNO_IP_OPTIONS -D_FILE_OFFSET_BITS=64 -DNO_EXECINFO
MAKE_VARS += build=Linux-$$(ARCH)
MAKE_FLAGS += AR="$$(TARGET_AR) r"
$(SED) 's%# EXIM_GROUP=.*%EXIM_GROUP=42%' $(PKG_BUILD_DIR)/Local/Makefile
$(SED) 's%# EXIM_USER=.*%EXIM_USER=42%' $(PKG_BUILD_DIR)/Local/Makefile
$(SED) 's%# INCLUDE=.*%INCLUDE=-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/usr/include%' $(PKG_BUILD_DIR)/Local/Makefile
- $(SED) 's%# HAVE_IPV6=YES%HAVE_IPV6=YES%' $(PKG_BUILD_DIR)/Local/Makefile
+ $(SED) 's%# HAVE_IPV6=yes%HAVE_IPV6=yes%' $(PKG_BUILD_DIR)/Local/Makefile
$(SED) 's%# WITH_CONTENT_SCAN=yes%WITH_CONTENT_SCAN=yes%' $(PKG_BUILD_DIR)/Local/Makefile
$(SED) 's%# SUPPORT_MAILDIR=yes%SUPPORT_MAILDIR=yes%' $(PKG_BUILD_DIR)/Local/Makefile
$(SED) 's%# SUPPORT_MAILSTORE=yes%SUPPORT_MAILSTORE=yes%' $(PKG_BUILD_DIR)/Local/Makefile
--- a/src/drtables.c
+++ b/src/drtables.c
-@@ -662,7 +662,7 @@ addlookupmodule(NULL, &ibase_lookup_modu
+@@ -663,7 +663,7 @@ addlookupmodule(NULL, &ibase_lookup_modu
addlookupmodule(NULL, &ldap_lookup_module_info);
#endif
}
--- a/src/pdkim/signing.c
+++ b/src/pdkim/signing.c
-@@ -703,7 +703,6 @@ return NULL;
+@@ -704,7 +704,6 @@ return NULL;
void
exim_dkim_init(void)
{
--- a/src/tls-openssl.c
+++ b/src/tls-openssl.c
-@@ -22,7 +22,10 @@ functions from the OpenSSL library. */
+@@ -23,7 +23,10 @@ functions from the OpenSSL library. */
#include <openssl/lhash.h>
#include <openssl/ssl.h>
#include <openssl/err.h>
#ifndef OPENSSL_NO_ECDH
# include <openssl/ec.h>
#endif
-@@ -885,8 +888,9 @@ pkey = EVP_RSA_gen(2048);
+@@ -944,8 +947,9 @@ pkey = EVP_RSA_gen(2048);
X509_set_version(x509, 2); /* N+1 - version 3 */
ASN1_INTEGER_set(X509_get_serialNumber(x509), 1);
X509_set_pubkey(x509, pkey);
name = X509_get_subject_name(x509);
-@@ -4670,8 +4674,8 @@ return string_fmt_append(g,
+@@ -4979,8 +4983,8 @@ return string_fmt_append(g,
" Runtime: %s\n"
" : %s\n",
OPENSSL_VERSION_TEXT,
/* third line is 38 characters for the %s and the line is 73 chars long;
the OpenSSL output includes a "built on: " prefix already. */
}
-@@ -4713,8 +4717,6 @@ if (pidnow != pidlast)
+@@ -5022,8 +5026,6 @@ if (pidnow != pidlast)
is unique for each thread", this doesn't apparently apply across processes,
so our own warning from vaguely_random_number_fallback() applies here too.
Fix per PostgreSQL. */
--- a/src/tlscert-openssl.c
+++ b/src/tlscert-openssl.c
-@@ -218,13 +218,13 @@ return mod ? tls_field_from_dn(cp, mod)
+@@ -219,13 +219,13 @@ return mod ? tls_field_from_dn(cp, mod)
uschar *
tls_cert_not_before(void * cert, uschar * mod)
{
--- a/src/EDITME
+++ b/src/EDITME
-@@ -873,6 +873,21 @@ HEADERS_CHARSET="ISO-8859-1"
+@@ -904,6 +904,21 @@ HEADERS_CHARSET="ISO-8859-1"
#------------------------------------------------------------------------------
#define CONFIGURE_FILE
--- a/src/globals.c
+++ b/src/globals.c
-@@ -117,6 +117,10 @@ int dsn_ret = 0;
+@@ -118,6 +118,10 @@ int dsn_ret = 0;
const pcre2_code *regex_DSN = NULL;
uschar *dsn_advertise_hosts = NULL;
BOOL gnutls_allow_auto_pkcs11 = FALSE;
--- a/src/globals.h
+++ b/src/globals.h
-@@ -155,6 +155,9 @@ extern int dsn_ret; /
+@@ -157,6 +157,9 @@ extern int dsn_ret; /
extern const pcre2_code *regex_DSN; /* For recognizing DSN settings */
extern uschar *dsn_advertise_hosts; /* host for which TLS is advertised */
--- a/src/local_scan.c
+++ b/src/local_scan.c
-@@ -7,58 +7,133 @@
- /* See the file NOTICE for conditions of use and distribution. */
+@@ -8,58 +8,133 @@
+ /* SPDX-License-Identifier: GPL-2.0-or-later */
-/******************************************************************************
/* End of local_scan.c */
--- a/src/local_scan.h
+++ b/src/local_scan.h
-@@ -27,6 +27,7 @@ settings, and the store functions. */
+@@ -28,6 +28,7 @@ settings, and the store functions. */
#include <stdarg.h>
#include <sys/types.h>
#include "config.h"
#include "mytypes.h"
#include "store.h"
-@@ -166,6 +167,9 @@ extern header_line *header_list; /
+@@ -177,6 +178,9 @@ extern header_line *header_list; /
extern BOOL host_checking; /* Set when checking a host */
extern uschar *interface_address; /* Interface for incoming call */
extern int interface_port; /* Port number for incoming call */
extern uschar *message_id; /* Internal id of message being handled */
extern uschar *received_protocol; /* Name of incoming protocol */
extern int recipients_count; /* Number of recipients */
-@@ -236,4 +240,6 @@ extern pid_t child_open_exim2_functio
+@@ -247,4 +251,6 @@ extern pid_t child_open_exim2_functio
extern pid_t child_open_function(uschar **, uschar **, int, int *, int *, BOOL, const uschar *);
#endif
/* End of local_scan.h */
--- a/src/readconf.c
+++ b/src/readconf.c
-@@ -212,6 +212,9 @@ static optionlist optionlist_config[] =
+@@ -216,6 +216,9 @@ static optionlist optionlist_config[] =
{ "local_from_prefix", opt_stringptr, {&local_from_prefix} },
{ "local_from_suffix", opt_stringptr, {&local_from_suffix} },
{ "local_interfaces", opt_stringptr, {&local_interfaces} },
#endif
--- a/src/string.c
+++ b/src/string.c
-@@ -428,6 +428,7 @@ return ss;
+@@ -453,6 +453,7 @@ return ss;
#if (defined(HAVE_LOCAL_SCAN) || defined(EXPAND_DLFUNC)) \
&& !defined(MACRO_PREDEF) && !defined(COMPILE_UTILITY)
/*************************************************
* Copy and save string *
*************************************************/
-@@ -473,6 +474,7 @@ string_copyn_function(const uschar * s,
+@@ -498,6 +499,7 @@ string_copyn_function(const uschar * s,
{
return string_copyn(s, n);
}
---- a/src/drtables.c
-+++ b/src/drtables.c
-@@ -736,7 +736,7 @@ else
- {
- char * name = ent->d_name;
- int len = (int)strlen(name);
-- if (regex_match(regex_islookupmod, US name, len, NUL))
-+ if (regex_match(regex_islookupmod, US name, len, NULL))
- {
- int pathnamelen = len + (int)strlen(LOOKUP_MODULE_DIR) + 2;
- void *dl;
--- a/src/exim.c
+++ b/src/exim.c
-@@ -636,13 +636,15 @@ exim_nullstd(void)
+@@ -642,13 +642,15 @@ exim_nullstd(void)
{
int devnull = -1;
struct stat statbuf;
}
--- a/src/local_scan.h
+++ b/src/local_scan.h
-@@ -26,6 +26,7 @@ store.c
+@@ -27,6 +27,7 @@ store.c
settings, and the store functions. */
#include <stdarg.h>
--- /dev/null
+--- a/OS/Makefile-Base
++++ b/OS/Makefile-Base
+@@ -253,7 +253,7 @@ utils: $(EXIM_MONITOR) exicyclog exinext
+ transport-filter.pl convert4r3 convert4r4 \
+ exim_checkaccess \
+ exim_dbmbuild exim_dumpdb exim_fixdb exim_tidydb \
+- exim_lock exim_msgdate exim_id_update
++ exim_lock exim_msgdate
+
+
+ # Targets for special-purpose configuration header builders
--- /dev/null
+--- a/src/transports/smtp.c
++++ b/src/transports/smtp.c
+@@ -938,7 +938,7 @@ if ( sx->early_pipe_active
+ if (!(er = dbfn_read_enforce_length(dbm_file, ehlo_resp_key, sizeof(dbdata_ehlo_resp))))
+ debug_printf("no ehlo-resp record!\n");
+ else
+- debug_printf("ehlo-resp record is %d seconds old\n", time(NULL) - er->time_stamp);
++ debug_printf("ehlo-resp record is %.0f seconds old\n", difftime(time(NULL), er->time_stamp));
+ }
+
+ dbfn_delete(dbm_file, ehlo_resp_key);