--- /dev/null
+From a818f67959c0f6dd23ca37280d5c4f9b9ee07125 Mon Sep 17 00:00:00 2001
+From: Jeremy Harris <jgh146exb@wizmail.org>
+Date: Fri, 5 Jun 2015 15:30:33 +0100
+Subject: [PATCH] Guard routing against a null-deref. Bug 1639
+
+---
+ src/src/route.c | 31 +++++++++++++++----------------
+ 1 file changed, 15 insertions(+), 16 deletions(-)
+
+diff --git a/src/src/route.c b/src/src/route.c
+index cdfa6e6..39aed90 100644
+--- a/src/src/route.c
++++ b/src/src/route.c
+@@ -1920,24 +1920,23 @@ if (unseen && r->next != NULL)
+ /* Unset the address expansions, and return the final result. */
+
+ ROUTE_EXIT:
+-if (yield == DEFER) {
+- if (
+- ((Ustrstr(addr->message, "failed to expand") != NULL) || (Ustrstr(addr->message, "expansion of ") != NULL)) &&
+- (
+- Ustrstr(addr->message, "mysql") != NULL ||
+- Ustrstr(addr->message, "pgsql") != NULL ||
++if ( yield == DEFER
++ && addr->message
++ && ( Ustrstr(addr->message, "failed to expand") != NULL
++ || Ustrstr(addr->message, "expansion of ") != NULL
++ )
++ && ( Ustrstr(addr->message, "mysql") != NULL
++ || Ustrstr(addr->message, "pgsql") != NULL
+ #ifdef EXPERIMENTAL_REDIS
+- Ustrstr(addr->message, "redis") != NULL ||
++ || Ustrstr(addr->message, "redis") != NULL
+ #endif
+- Ustrstr(addr->message, "sqlite") != NULL ||
+- Ustrstr(addr->message, "ldap:") != NULL ||
+- Ustrstr(addr->message, "ldapdn:") != NULL ||
+- Ustrstr(addr->message, "ldapm:") != NULL
+- )
+- ) {
+- addr->message = string_sprintf("Temporary internal error");
+- }
+-}
++ || Ustrstr(addr->message, "sqlite") != NULL
++ || Ustrstr(addr->message, "ldap:") != NULL
++ || Ustrstr(addr->message, "ldapdn:") != NULL
++ || Ustrstr(addr->message, "ldapm:") != NULL
++ )
++ )
++ addr->message = string_sprintf("Temporary internal error");
+
+ deliver_set_expansions(NULL);
+ router_name = NULL;
+--
+1.9.1
+
exit 0
fi
+checkconfig() {
+ local details=${1:-0} ret
+
+ RETVAL=0
+ if [ $details = 1 ]; then
+ for CONFIG in /etc/mail/exim.conf $EXIM_EXTRA_CONFIGS; do
+ run_cmd "Checking exim configuration ($CONFIG)" exim -bV -C $CONFIG
+ ret=$?
+ if [ $ret != 0 ]; then
+ RETVAL=$ret
+ fi
+ done
+ else
+ for CONFIG in /etc/mail/exim.conf $EXIM_EXTRA_CONFIGS; do
+ exim -bV -C $CONFIG > /dev/null 2>&1
+ ret=$?
+ if [ $ret != 0 ]; then
+ show "Checking %s configuration (%s)" "exim" "$CONFIG"; fail
+ RETVAL=$ret
+ fi
+ done
+ if [ $RETVAL != 0 ]; then
+ nls 'Configuration test failed. See details with %s "checkconfig"' $0
+ exit $RETVAL
+ fi
+ fi
+}
+
start() {
# Start daemons.
if [ -f /var/lock/subsys/exim ]; then
return
fi
+ checkconfig
stop
start
}
return
fi
- run_cmd "Checking exim configuration" /usr/bin/exim -bV
- if [ $? -eq 0 ]; then
- msg_reloading "Exim"
- killproc exim -HUP
- RETVAL=$?
- fi
+ checkconfig
+ msg_reloading "Exim"
+ killproc exim -HUP
+ RETVAL=$?
}
RETVAL=0
stop
;;
restart)
+ checkconfig
stop
start
;;
reload
;;
checkconfig|configtest)
- exim -bV
- RETVAL=$?
+ checkconfig 1
;;
status)
status exim
Summary(pt_BR.UTF-8): Servidor de correio eletrônico exim
Name: exim
Version: 4.85
-Release: 3
+Release: 4
Epoch: 2
License: GPL
Group: Networking/Daemons/SMTP
Patch4: %{name}4-Makefile-Default.patch
# http://marc.merlins.org/linux/exim/files/sa-exim-cvs/localscan_dlopen_exim_4.20_or_better.patch
Patch5: localscan_dlopen_%{name}_4.20_or_better.patch
+Patch6: exim-bug-1639.patch
Patch8: %{name}-spam-timeout.patch
Patch10: %{name}-force-sigalrm.patch
Patch11: openssl_build_fix.patch
%patch3 -p1
%patch4 -p1
%patch5 -p1
+%patch6 -p2
%patch8 -p1
%patch10 -p1
%patch11 -p1