aboutsummaryrefslogtreecommitdiff
path: root/mail/exim/files/patch-z0042-Pass-authenticator-pubname-through-spool.-Bug-2648
diff options
context:
space:
mode:
Diffstat (limited to 'mail/exim/files/patch-z0042-Pass-authenticator-pubname-through-spool.-Bug-2648')
-rw-r--r--mail/exim/files/patch-z0042-Pass-authenticator-pubname-through-spool.-Bug-2648107
1 files changed, 107 insertions, 0 deletions
diff --git a/mail/exim/files/patch-z0042-Pass-authenticator-pubname-through-spool.-Bug-2648 b/mail/exim/files/patch-z0042-Pass-authenticator-pubname-through-spool.-Bug-2648
new file mode 100644
index 000000000000..365d36034fd0
--- /dev/null
+++ b/mail/exim/files/patch-z0042-Pass-authenticator-pubname-through-spool.-Bug-2648
@@ -0,0 +1,107 @@
+From a3ab48f23ee4a83f796440ef67d7ac7b43aad4b5 Mon Sep 17 00:00:00 2001
+From: Jeremy Harris <jgh146exb@wizmail.org>
+Date: Sat, 31 Oct 2020 23:58:11 +0000
+Subject: [PATCH 42/42] Pass authenticator pubname through spool. Bug 2648
+
+(cherry picked from commit a75ebe0dcc5faeb915cacb0d9db66d2475789116)
+---
+ doc/ChangeLog | 4 ++++
+ exim_monitor/em_globals.c | 1 +
+ src/smtp_in.c | 12 +++++++-----
+ src/spool_in.c | 4 +++-
+ src/spool_out.c | 6 ++++--
+
+diff --git doc/ChangeLog doc/ChangeLog
+index 9924fca5c..4759e018e 100644
+--- doc/ChangeLog
++++ doc/ChangeLog
+@@ -107,6 +107,10 @@ JH/26 Bug 2646: fix a memory usage issue in ldap lookups. Previously, when more
+ details, an internal consistency trap could be hit while walking the list
+ of servers.
+
++JH/27 Bug 2648: fix the passing of an authenticator public-name through spool
++ files. The value is used by the authresults expansion item. Previously
++ if this was used in a router or transport, a crash could result.
++
+
+ Exim version 4.94
+ -----------------
+diff --git exim_monitor/em_globals.c exim_monitor/em_globals.c
+index 925e88e05..30d22b5eb 100644
+--- exim_monitor/em_globals.c
++++ exim_monitor/em_globals.c
+@@ -205,6 +205,7 @@ uschar *sender_address = NULL;
+ uschar *sender_fullhost = NULL;
+ uschar *sender_helo_name = NULL;
+ uschar *sender_host_address = NULL;
++uschar *sender_host_auth_pubname = NULL;
+ uschar *sender_host_authenticated = NULL;
+ uschar *sender_host_name = NULL;
+ int sender_host_port = 0;
+diff --git src/smtp_in.c src/smtp_in.c
+index a13f0ed63..f53c3cf65 100644
+--- src/smtp_in.c
++++ src/smtp_in.c
+@@ -5935,12 +5935,14 @@ if (!sender_host_authenticated)
+
+ g = string_append(g, 2, US";\n\tauth=pass (", sender_host_auth_pubname);
+
+-if (Ustrcmp(sender_host_auth_pubname, "tls") != 0)
+- g = string_append(g, 2, US") smtp.auth=", authenticated_id);
+-else if (authenticated_id)
+- g = string_append(g, 2, US") x509.auth=", authenticated_id);
++if (Ustrcmp(sender_host_auth_pubname, "tls") == 0)
++ g = authenticated_id
++ ? string_append(g, 2, US") x509.auth=", authenticated_id)
++ : string_cat(g, US") reason=x509.auth");
+ else
+- g = string_catn(g, US") reason=x509.auth", 17);
++ g = authenticated_id
++ ? string_append(g, 2, US") smtp.auth=", authenticated_id)
++ : string_cat(g, US", no id saved)");
+
+ if (authenticated_sender)
+ g = string_append(g, 2, US" smtp.mailfrom=", authenticated_sender);
+diff --git src/spool_in.c src/spool_in.c
+index 1b4cefdb2..35e44df26 100644
+--- src/spool_in.c
++++ src/spool_in.c
+@@ -253,7 +253,7 @@ sender_helo_name = NULL;
+ sender_host_address = NULL;
+ sender_host_name = NULL;
+ sender_host_port = 0;
+-sender_host_authenticated = NULL;
++sender_host_authenticated = sender_host_auth_pubname = NULL;
+ sender_ident = NULL;
+ f.sender_local = FALSE;
+ f.sender_set_untrusted = FALSE;
+@@ -580,6 +580,8 @@ for (;;)
+ host_lookup_deferred = TRUE;
+ else if (Ustrcmp(p, "ost_lookup_failed") == 0)
+ host_lookup_failed = TRUE;
++ else if (Ustrncmp(p, "ost_auth_pubname", 16) == 0)
++ sender_host_auth_pubname = string_copy_taint(var + 18, tainted);
+ else if (Ustrncmp(p, "ost_auth", 8) == 0)
+ sender_host_authenticated = string_copy_taint(var + 10, tainted);
+ else if (Ustrncmp(p, "ost_name", 8) == 0)
+diff --git src/spool_out.c src/spool_out.c
+index 4b6539ecd..0851ce956 100644
+--- src/spool_out.c
++++ src/spool_out.c
+@@ -174,9 +174,11 @@ if (sender_host_address)
+ fprintf(fp, "-host_address %s.%d\n", sender_host_address, sender_host_port);
+ if (sender_host_name)
+ spool_var_write(fp, US"host_name", sender_host_name);
+- if (sender_host_authenticated)
+- spool_var_write(fp, US"host_auth", sender_host_authenticated);
+ }
++if (sender_host_authenticated)
++ spool_var_write(fp, US"host_auth", sender_host_authenticated);
++if (sender_host_auth_pubname)
++ spool_var_write(fp, US"host_auth_pubname", sender_host_auth_pubname);
+
+ /* Also about the interface a message came in on */
+
+--
+2.29.2
+