diff options
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-2648 | 107 |
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 + |