On Sun, Aug 18, 2024 at 02:07:43PM +0200, Peter N. M. Hansteen wrote:
> After upgrading my mail server to the latest snapshot, exim consistently
> crashes on incoming TLS, making it unable to receive among other
> openbsd.org mail.
pdkim.c:671:12: warning: call to undeclared function 'strchrnul'; ISO C99 and
later do not support implicit function declarations
[-Wimplicit-function-declaration]
end = US strchrnul(CS ele, ';');
^
pdkim.c:671:9: warning: cast to 'unsigned char *' from smaller integer type
'int' [-Wint-to-pointer-cast]
Please try this diff.
The problem is that strchrnul has no prototype, hence it is assumed
that it returns an int, hence the 64-bit pointer it returns is truncated
to 32 bits and hence invalid.
The fix for upstream probably is to add this to src/osfunctions.h
#ifndef strchrnul
extern char *strchrnul(const char * s, int c);
#endif
but I couldn't bring myself to do that.
Index: Makefile
===================================================================
RCS file: /cvs/ports/mail/exim/Makefile,v
diff -u -p -r1.149 Makefile
--- Makefile 30 Jul 2024 21:10:05 -0000 1.149
+++ Makefile 20 Aug 2024 16:41:49 -0000
@@ -7,6 +7,8 @@ PKGNAME-main = exim-${VERSION}
FULLPKGNAME-eximon = exim-eximon-${VERSION}
FULLPKGPATH-eximon = ${PKGPATH},-eximon
+REVISION = 0
+
CATEGORIES = mail
HOMEPAGE = https://www.exim.org/
Index: patches/patch-Local_Makefile
===================================================================
RCS file: /cvs/ports/mail/exim/patches/patch-Local_Makefile,v
diff -u -p -r1.10 patch-Local_Makefile
--- patches/patch-Local_Makefile 15 Nov 2023 10:15:29 -0000 1.10
+++ patches/patch-Local_Makefile 20 Aug 2024 16:41:22 -0000
@@ -1,7 +1,7 @@
Index: Local/Makefile
--- Local/Makefile.orig
+++ Local/Makefile
-@@ -101,7 +101,7 @@
+@@ -103,7 +103,7 @@
# /usr/local/sbin. The installation script will try to create this directory,
# and any superior directories, if they do not exist.
@@ -10,7 +10,7 @@ Index: Local/Makefile
#------------------------------------------------------------------------------
-@@ -117,7 +117,7 @@ BIN_DIRECTORY=/usr/exim/bin
+@@ -119,7 +119,7 @@ BIN_DIRECTORY=/usr/exim/bin
# don't exist. It will also install a default runtime configuration if this
# file does not exist.
@@ -19,7 +19,7 @@ Index: Local/Makefile
# It is possible to specify a colon-separated list of files for
CONFIGURE_FILE.
# In this case, Exim will use the first of them that exists when it is run.
-@@ -134,7 +134,7 @@ CONFIGURE_FILE=/usr/exim/configure
+@@ -136,7 +136,7 @@ CONFIGURE_FILE=/usr/exim/configure
# deliveries. (Local deliveries run as various non-root users, typically as
the
# owner of a local mailbox.) Specifying these values as root is not supported.
@@ -28,7 +28,7 @@ Index: Local/Makefile
# If you specify EXIM_USER as a name, this is looked up at build time, and the
# uid number is built into the binary. However, you can specify that this
-@@ -212,11 +212,11 @@ SPOOL_DIRECTORY=/var/spool/exim
+@@ -214,11 +214,11 @@ SPOOL_DIRECTORY=/var/spool/exim
# If you are building with TLS, the library configuration must be done:
# Uncomment this if you are using OpenSSL
@@ -42,7 +42,7 @@ Index: Local/Makefile
# TLS_LIBS=-L/usr/local/openssl/lib -lssl -lcrypto
# Uncomment this if you are using GnuTLS
-@@ -342,7 +342,7 @@ TRANSPORT_SMTP=yes
+@@ -344,7 +344,7 @@ TRANSPORT_SMTP=yes
# This one is special-purpose, and commonly not required, so it is not
# included by default.
@@ -51,7 +51,7 @@ Index: Local/Makefile
#------------------------------------------------------------------------------
-@@ -351,9 +351,9 @@ TRANSPORT_SMTP=yes
+@@ -353,9 +353,9 @@ TRANSPORT_SMTP=yes
# MBX, is included only when requested. If you do not know what this is about,
# leave these settings commented out.
@@ -64,7 +64,7 @@ Index: Local/Makefile
#------------------------------------------------------------------------------
-@@ -411,8 +411,8 @@ LOOKUP_DBM=yes
+@@ -413,8 +413,8 @@ LOOKUP_DBM=yes
LOOKUP_LSEARCH=yes
LOOKUP_DNSDB=yes
@@ -75,7 +75,7 @@ Index: Local/Makefile
# LOOKUP_IBASE=yes
# LOOKUP_JSON=yes
# LOOKUP_LDAP=yes
-@@ -420,10 +420,10 @@ LOOKUP_DNSDB=yes
+@@ -422,10 +422,10 @@ LOOKUP_DNSDB=yes
# LOOKUP_MYSQL=yes
# LOOKUP_MYSQL_PC=mariadb
@@ -88,7 +88,7 @@ Index: Local/Makefile
# LOOKUP_PGSQL=yes
# LOOKUP_REDIS=yes
# LOOKUP_SQLITE=yes
-@@ -523,7 +523,7 @@ SUPPORT_DANE=yes
+@@ -525,7 +525,7 @@ SUPPORT_DANE=yes
# and the MIME ACL. Please read the documentation to learn more about these
# features.
@@ -97,7 +97,7 @@ Index: Local/Makefile
# If you have content scanning you may wish to only include some of the
scanner
# interfaces. Uncomment any of these lines to remove that code.
-@@ -564,7 +564,7 @@ DISABLE_MAL_MKS=yes
+@@ -566,7 +566,7 @@ DISABLE_MAL_MKS=yes
# from Exim. Note it can only be supported when built with
# GnuTLS 3.1.3 or later, or OpenSSL
@@ -106,7 +106,7 @@ Index: Local/Makefile
#------------------------------------------------------------------------------
# By default, Exim has support for checking the AD bit in a DNS response, to
-@@ -785,18 +785,18 @@ FIXED_NEVER_USERS=root
+@@ -794,18 +794,18 @@ FIXED_NEVER_USERS=root
# included in the Exim binary. You will then need to set up the run time
# configuration to make use of the mechanism(s) selected.
@@ -129,7 +129,7 @@ Index: Local/Makefile
# Heimdal through 1.5 required pkg-config 'heimdal-gssapi'; Heimdal 7.1
# requires multiple pkg-config files to work with Exim, so the second example
-@@ -843,7 +843,7 @@ HEADERS_CHARSET="ISO-8859-1"
+@@ -852,7 +852,7 @@ HEADERS_CHARSET="ISO-8859-1"
# the Sieve filter support. For those OS where iconv() is known to be
installed
# as standard, the file in OS/Makefile-xxxx contains
#
@@ -138,7 +138,7 @@ Index: Local/Makefile
#
# If you are not using one of those systems, but have installed iconv(), you
# need to uncomment that line above. In some cases, you may find that iconv()
-@@ -932,7 +932,7 @@ HEADERS_CHARSET="ISO-8859-1"
+@@ -941,7 +941,7 @@ HEADERS_CHARSET="ISO-8859-1"
# %s. This will be replaced by one of the strings "main", "panic", or "reject"
# to form the final file names. Some installations may want something like
this:
@@ -147,7 +147,7 @@ Index: Local/Makefile
# which results in files with names /var/log/exim_mainlog, etc. The directory
# in which the log files are placed must exist; Exim does not try to create
-@@ -1004,7 +1004,7 @@ ZCAT_COMMAND=/usr/bin/zcat
+@@ -1013,7 +1013,7 @@ ZCAT_COMMAND=/usr/bin/zcat
# (version 5.004 or later) installed, set EXIM_PERL to perl.o. Using embedded
# Perl costs quite a lot of resources. Only do this if you really need it.
@@ -156,7 +156,7 @@ Index: Local/Makefile
#------------------------------------------------------------------------------
-@@ -1132,7 +1132,7 @@ ZCAT_COMMAND=/usr/bin/zcat
+@@ -1141,7 +1141,7 @@ ZCAT_COMMAND=/usr/bin/zcat
# group. Once you have installed saslauthd, you should arrange for it to be
# started by root at boot time.
@@ -165,7 +165,7 @@ Index: Local/Makefile
#------------------------------------------------------------------------------
-@@ -1180,7 +1180,7 @@ ZCAT_COMMAND=/usr/bin/zcat
+@@ -1189,7 +1189,7 @@ ZCAT_COMMAND=/usr/bin/zcat
# aliases). The following setting can be changed to specify a different
# location for the system alias file.
@@ -174,7 +174,7 @@ Index: Local/Makefile
#------------------------------------------------------------------------------
-@@ -1445,7 +1445,7 @@ EXIM_TMPDIR="/tmp"
+@@ -1454,7 +1454,7 @@ EXIM_TMPDIR="/tmp"
# (process id) to a file so that it can easily be identified. The path of the
# file can be specified here. Some installations may want something like this:
Index: patches/patch-src_pdkim_pdkim_c
===================================================================
RCS file: patches/patch-src_pdkim_pdkim_c
diff -N patches/patch-src_pdkim_pdkim_c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_pdkim_pdkim_c 20 Aug 2024 16:40:44 -0000
@@ -0,0 +1,13 @@
+Index: src/pdkim/pdkim.c
+--- src/pdkim/pdkim.c.orig
++++ src/pdkim/pdkim.c
+@@ -657,6 +657,9 @@ return sig;
+
+
+ /* --------------------------------------------------------------------------
*/
++#ifndef EXIM_HAVE_STRCHRNUL
++char *strchrnul(const char * s, int c);
++#endif
+
+ pdkim_pubkey *
+ pdkim_parse_pubkey_record(const uschar * raw_record)
Index: patches/patch-src_tls-openssl_c
===================================================================
RCS file: /cvs/ports/mail/exim/patches/patch-src_tls-openssl_c,v
diff -u -p -r1.4 patch-src_tls-openssl_c
--- patches/patch-src_tls-openssl_c 15 Jan 2024 08:11:26 -0000 1.4
+++ patches/patch-src_tls-openssl_c 20 Aug 2024 16:39:30 -0000
@@ -7,5 +7,5 @@ Index: src/tls-openssl.c
# define EXIM_HAVE_OPENSSL_CIPHER_GET_ID
+# define OPENSSL_AUTO_SHA256
#endif
-
- #if !defined(LIBRESSL_VERSION_NUMBER) && (OPENSSL_VERSION_NUMBER >=
0x030000000L)
+ #if LIBRESSL_VERSION_NUMBER >= 0x3050000fL
+ # define EXIM_HAVE_OPENSSL_OCSP_RESP_GET0_CERTS