2 Commits

Author SHA1 Message Date
Christian Marangi
8762399e15 clixon: backport upstream patch fixing support for 32 bit
Backport upstream patch for clixon fixing support for 32 bit.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-12-02 00:03:33 +01:00
Daniel Golle
aed8ca7bd9 exim: update to version 4.99
See https://code.exim.org/exim/exim/releases/tag/exim-4.99

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2025-12-01 22:37:41 +00:00
8 changed files with 134 additions and 48 deletions

View File

@@ -1,12 +1,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=exim
PKG_VERSION:=4.98.2
PKG_RELEASE:=2
PKG_VERSION:=4.99
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://ftp.exim.org/pub/exim/exim4/
PKG_HASH:=88b8e8a67c1db6cc0b1d148161aa36e662f4ca2fef25d5b6f3694d490e42dcae
PKG_HASH:=5df38b042ffa9a9c8d31b20bc8481558070e361b06f657608622a62a327adcba
PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
PKG_LICENSE:=GPL-2.0-or-later

View File

@@ -1,11 +0,0 @@
--- a/src/drtables.c
+++ b/src/drtables.c
@@ -663,7 +663,7 @@ addlookupmodule(NULL, &ibase_lookup_modu
addlookupmodule(NULL, &ldap_lookup_module_info);
#endif
-#ifdef LOOKUP_JSON
+#if defined(LOOKUP_JSON) && LOOKUP_JSON!=2
addlookupmodule(NULL, &json_lookup_module_info);
#endif

View File

@@ -1,6 +1,6 @@
--- a/src/dane-openssl.c
+++ b/src/dane-openssl.c
@@ -1098,8 +1098,8 @@ if (dane->selectors[DANESSL_USAGE_DANE_T
@@ -1122,8 +1122,8 @@ if (dane->selectors[DANESSL_USAGE_DANE_T
* Check that setting the untrusted chain updates the expected
* structure member at the expected offset.
*/
@@ -11,16 +11,6 @@
OPENSSL_assert(dane->chain == X509_STORE_CTX_get0_untrusted(ctx));
}
}
--- a/src/pdkim/signing.c
+++ b/src/pdkim/signing.c
@@ -704,7 +704,6 @@ return NULL;
void
exim_dkim_init(void)
{
-ERR_load_crypto_strings();
}
--- a/src/tls-openssl.c
+++ b/src/tls-openssl.c
@@ -23,7 +23,10 @@ functions from the OpenSSL library. */
@@ -31,10 +21,10 @@
+#include <openssl/dh.h>
#include <openssl/rand.h>
+#include <openssl/rsa.h>
#ifndef OPENSSL_NO_ECDH
# include <openssl/ec.h>
#endif
@@ -947,8 +950,9 @@ pkey = EVP_RSA_gen(2048);
#include <openssl/ec.h>
#ifndef DISABLE_OCSP
# include <openssl/ocsp.h>
@@ -909,8 +912,9 @@ pkey = EVP_RSA_gen(2048);
X509_set_version(x509, 2); /* N+1 - version 3 */
ASN1_INTEGER_set(X509_get_serialNumber(x509), 1);
@@ -46,7 +36,7 @@
X509_set_pubkey(x509, pkey);
name = X509_get_subject_name(x509);
@@ -4972,8 +4976,8 @@ return string_fmt_append(g,
@@ -5031,8 +5035,8 @@ return string_fmt_append(g,
" Runtime: %s\n"
" : %s\n",
OPENSSL_VERSION_TEXT,
@@ -57,7 +47,7 @@
/* third line is 38 characters for the %s and the line is 73 chars long;
the OpenSSL output includes a "built on: " prefix already. */
}
@@ -5015,8 +5019,6 @@ if (pidnow != pidlast)
@@ -5074,8 +5078,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. */
@@ -70,14 +60,14 @@
+++ b/src/tlscert-openssl.c
@@ -219,13 +219,13 @@ return mod ? tls_field_from_dn(cp, mod)
uschar *
tls_cert_not_before(void * cert, uschar * mod)
tls_cert_not_before(void * cert, const uschar * mod)
{
-return asn1_time_copy(X509_get_notBefore((X509 *)cert), mod);
+return asn1_time_copy(X509_getm_notBefore((X509 *)cert), mod);
}
uschar *
tls_cert_not_after(void * cert, uschar * mod)
tls_cert_not_after(void * cert, const uschar * mod)
{
-return asn1_time_copy(X509_get_notAfter((X509 *)cert), mod);
+return asn1_time_copy(X509_getm_notAfter((X509 *)cert), mod);

View File

@@ -0,0 +1,11 @@
--- a/src/miscmods/Makefile
+++ b/src/miscmods/Makefile
@@ -62,7 +62,7 @@ dkim.o:
$(FE)$(CC) -c $(CFLAGS) $(INCLUDE) pdkim.c
$(FE)$(CC) -c $(CFLAGS) $(INCLUDE) $(TLS_INCLUDE) signing.c
$(FE)mv dkim.o dkim_tmp.o
- $(FE)ld -r -o dkim.o $(LDFLAGS_PARTIAL) \
+ $(FE)$(CC) -r -o dkim.o $(LDFLAGS_PARTIAL) \
dkim_tmp.o dkim_transport.o pdkim.o signing.o
# Similarly, we want a single .so for the dynamic-load module

View File

@@ -10,7 +10,7 @@ Last-Update: 2021-07-28
--- a/src/EDITME
+++ b/src/EDITME
@@ -913,6 +913,21 @@ HEADERS_CHARSET="ISO-8859-1"
@@ -998,6 +998,21 @@ HEADERS_CHARSET="ISO-8859-1"
#------------------------------------------------------------------------------
@@ -45,7 +45,7 @@ Last-Update: 2021-07-28
#define CONFIGURE_FILE
--- a/src/globals.c
+++ b/src/globals.c
@@ -118,6 +118,10 @@ int dsn_ret = 0;
@@ -120,6 +120,10 @@ int dsn_ret = 0;
const pcre2_code *regex_DSN = NULL;
uschar *dsn_advertise_hosts = NULL;
@@ -58,7 +58,7 @@ Last-Update: 2021-07-28
BOOL gnutls_allow_auto_pkcs11 = FALSE;
--- a/src/globals.h
+++ b/src/globals.h
@@ -157,6 +157,9 @@ extern int dsn_ret; /
@@ -164,6 +164,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 */
@@ -248,7 +248,7 @@ Last-Update: 2021-07-28
/* End of local_scan.c */
--- a/src/local_scan.h
+++ b/src/local_scan.h
@@ -28,6 +28,7 @@ settings, and the store functions. */
@@ -30,6 +30,7 @@ settings, and the store functions. */
#include <stdarg.h>
#include <sys/types.h>
@@ -256,7 +256,7 @@ Last-Update: 2021-07-28
#include "config.h"
#include "mytypes.h"
#include "store.h"
@@ -177,6 +178,9 @@ extern header_line *header_list; /
@@ -179,6 +180,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 */
@@ -266,16 +266,17 @@ Last-Update: 2021-07-28
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 */
@@ -247,4 +251,6 @@ extern pid_t child_open_exim2_functio
@@ -249,5 +253,7 @@ extern pid_t child_open_exim2_functio
extern pid_t child_open_function(uschar **, uschar **, int, int *, int *, BOOL, const uschar *);
#endif
+#pragma GCC visibility pop
+
#endif /* whole file */
/* End of local_scan.h */
--- a/src/readconf.c
+++ b/src/readconf.c
@@ -219,6 +219,9 @@ static optionlist optionlist_config[] =
@@ -218,6 +218,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} },
@@ -287,7 +288,7 @@ Last-Update: 2021-07-28
#endif
--- a/src/string.c
+++ b/src/string.c
@@ -455,6 +455,7 @@ return ss;
@@ -459,6 +459,7 @@ return ss;
#if (defined(HAVE_LOCAL_SCAN) || defined(EXPAND_DLFUNC)) \
&& !defined(MACRO_PREDEF) && !defined(COMPILE_UTILITY)
@@ -295,7 +296,7 @@ Last-Update: 2021-07-28
/*************************************************
* Copy and save string *
*************************************************/
@@ -500,6 +501,7 @@ string_copyn_function(const uschar * s,
@@ -504,6 +505,7 @@ string_copyn_function(const uschar * s,
{
return string_copyn(s, n);
}

View File

@@ -1,6 +1,6 @@
--- a/src/exim.c
+++ b/src/exim.c
@@ -647,13 +647,15 @@ exim_nullstd(void)
@@ -660,13 +660,15 @@ exim_nullstd(void)
{
int devnull = -1;
struct stat statbuf;
@@ -12,7 +12,7 @@
{
- if (devnull < 0) devnull = open("/dev/null", O_RDWR);
+ if (devnull < 0) devnull = open(devnullpath, O_RDWR);
if (devnull < 0) log_write(0, LOG_MAIN|LOG_PANIC_DIE, "%s",
if (devnull < 0) log_write_die(0, LOG_MAIN, "%s",
- string_open_failed("/dev/null", NULL));
+ string_open_failed("%s", devnullpath));
if (devnull != i) (void)dup2(devnull, i);
@@ -20,7 +20,7 @@
}
--- a/src/local_scan.h
+++ b/src/local_scan.h
@@ -27,6 +27,7 @@ store.c
@@ -29,6 +29,7 @@ store.c
settings, and the store functions. */
#include <stdarg.h>

View File

@@ -1,8 +1,8 @@
--- a/OS/Makefile-Base
+++ b/OS/Makefile-Base
@@ -253,7 +253,7 @@ utils: $(EXIM_MONITOR) exicyclog exinext
transport-filter.pl convert4r3 convert4r4 \
exim_checkaccess \
@@ -252,7 +252,7 @@ utils: $(EXIM_MONITOR) exicyclog exinext
exigrep eximstats exipick exiqgrep exiqsumm \
transport-filter.pl exim_checkaccess \
exim_dbmbuild exim_dumpdb exim_fixdb exim_tidydb \
- exim_lock exim_msgdate exim_id_update
+ exim_lock exim_msgdate

View File

@@ -0,0 +1,95 @@
From 47f94d909198cd9331027ed0a851e0d05e3bb117 Mon Sep 17 00:00:00 2001
From: Christian Marangi <ansuelsmth@gmail.com>
Date: Fri, 28 Nov 2025 10:56:30 +0100
Subject: [PATCH] Better handle size_t on 32bit system for cli_show
Size_t have different size on 32bit system and it's normally 4 bytes
instead of 8 bytes.
This cause compilation warning and also error for parse_uint64.
To better handle this, introduce a new variable to handle case where
size_t can be used as is and change sz type to uint64_t to follow
parse_uint64 requirement.
This also handle corner case where value might be cut after parsing
a value of 4 bytes expected to be 8 bytes.
While at it also change the cligen_output to %zu where size_t type is
used to further mute additional compilation warning.
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
---
apps/cli/cli_show.c | 27 ++++++++++++++-------------
1 file changed, 14 insertions(+), 13 deletions(-)
--- a/apps/cli/cli_show.c
+++ b/apps/cli/cli_show.c
@@ -2012,7 +2012,8 @@ cli_show_statistics(clixon_handle h,
uint64_t nr;
uint64_t tnr0;
uint64_t tnr = 0;
- size_t sz;
+ uint64_t sz;
+ size_t esz;
size_t tsz0;
size_t tsz = 0;
yang_stmt *ymounts;
@@ -2075,17 +2076,17 @@ cli_show_statistics(clixon_handle h,
inext2 = 0;
while ((yspec = yn_iter(ydomain, &inext2)) != NULL) {
name = yang_argument_get(yspec);
- nr = 0; sz = 0;
- if (yang_stats(yspec, 0, &nr, &sz) < 0)
+ nr = 0; esz = 0;
+ if (yang_stats(yspec, 0, &nr, &esz) < 0)
goto done;
tnr += nr;
- tsz += sz;
+ tsz += esz;
if (detail) {
- cligen_output(stdout, "YANG-%s-%s-size: %" PRIu64 "\n", domain, name, sz);
+ cligen_output(stdout, "YANG-%s-%s-size: %zu\n", domain, name, esz);
cligen_output(stdout, "YANG-%s-%s-nr: %" PRIu64 "\n", domain, name, nr);
}
else{
- translatenumber(sz, &u64, &unit);
+ translatenumber(esz, &u64, &unit);
cprintf(cb, "%s/%s", domain, name);
cligen_output(stdout, "%-25s %" PRIu64 "%-10s\n", cbuf_get(cb), u64, unit);
cbuf_reset(cb);
@@ -2093,7 +2094,7 @@ cli_show_statistics(clixon_handle h,
}
}
if (detail){
- cligen_output(stdout, "YANG-total-size: %" PRIu64 "\n", tsz);
+ cligen_output(stdout, "YANG-total-size: %zu\n", tsz);
cligen_output(stdout, "YANG-total-nr: %" PRIu64 "\n", tnr);
}
else {
@@ -2111,19 +2112,19 @@ cli_show_statistics(clixon_handle h,
while ((ph = cligen_ph_each(cli_cligen(h), ph)) != NULL) {
if ((pt = cligen_ph_parsetree_get(ph)) == NULL)
continue;
- nr = 0; sz = 0;
- pt_stats(pt, &nr, &sz);
+ nr = 0; esz = 0;
+ pt_stats(pt, &nr, &esz);
tnr += nr;
- tsz += sz;
+ tsz += esz;
if (detail){
- cligen_output(stdout, "CLIspec-%s-size: %" PRIu64 "\n", cligen_ph_name_get(ph), sz);
+ cligen_output(stdout, "CLIspec-%s-size: %zu\n", cligen_ph_name_get(ph), esz);
cligen_output(stdout, "CLIspec-%s-nr: %" PRIu64 "\n", cligen_ph_name_get(ph), nr);
}
}
if (detail){
- cligen_output(stdout, "CLIspec-total-size: %" PRIu64 "\n", tsz);
+ cligen_output(stdout, "CLIspec-total-size: %zu\n", tsz);
cligen_output(stdout, "CLIspec-total-nr: %" PRIu64 "\n", tnr);
- cligen_output(stdout, "Mem-Total-size: %" PRIu64 "\n", tsz0+tsz);
+ cligen_output(stdout, "Mem-Total-size: %zu\n", tsz0+tsz);
cligen_output(stdout, "Mem-Total-nr: %" PRIu64 "\n", tnr0+tnr);
}
else {