Fix ${domain:} for a bare local-part input. Bug 2375
authorJeremy Harris <jgh146exb@wizmail.org>
Tue, 27 Aug 2019 16:44:52 +0000 (17:44 +0100)
committerHeiko Schlittermann (HS12-RIPE) <hs@schlittermann.de>
Mon, 2 Sep 2019 22:18:05 +0000 (00:18 +0200)
Broken-by: cebd5bd2ab
(cherry picked from commit c5b0340697326238b0e2afd9d341185077d60d35)
(cherry picked from commit 92b922fae5bbd5a70da4c5aa2f43a457842c30eb)

src/src/expand.c
test/scripts/0000-Basic/0002
test/stdout/0002

index fbb2dfb149052144fa40a7dfaebe6060b5f5b127..0a8c5fbc0d7207ec92c8955a877e1473eb93e97a 100644 (file)
@@ -7151,11 +7151,12 @@ while (*s != 0)
         uschar * t = parse_extract_address(sub, &error, &start, &end, &domain,
           FALSE);
         if (t)
-         yield = c == EOP_DOMAIN
-           ? string_cat(yield, t + domain)
-           : c == EOP_LOCAL_PART && domain > 0
-           ? string_catn(yield, t, domain - 1 )
-           : string_cat(yield, t);
+         if (c != EOP_DOMAIN)
+           yield = c == EOP_LOCAL_PART && domain > 0
+             ? string_catn(yield, t, domain - 1)
+             : string_cat(yield, t);
+         else if (domain > 0)
+           yield = string_cat(yield, t + domain);
         continue;
         }
 
index e4ba4ec3e9a50dc729d77d9682bcbabfe43adcd2..86404f6b7fb444cbf313059c9d62e30a307aa22c 100644 (file)
@@ -169,6 +169,7 @@ addrss: ${address:Exim Person <(comment)local-part@dom.ain(comment2)> (that's me
 domain: ${domain:local-part@dom.ain}
 domain: ${domain:Exim Person <local-part@dom.ain> (that's me)}
 domain: ${domain:Exim Person <local-part(foo)@(bar)dom.ain> (that's me)}
+domain: ${domain:a.b.c}
 
 addresses: ${addresses:>' 'abc@xyz, 'pqr@xyz}
 addresses: ${addresses:Exim Person <local-part@dom.ain> (that's me)}
@@ -255,6 +256,7 @@ length: ${length_10:The quick brown fox} ${l_10:abc}
 lclpt:  ${local_part:local-part@dom.ain}
 lclpt:  ${local_part:Exim Person <local-part@dom.ain> (that's me)}
 lclpt:  ${local_part:Exim Person <local(comment).part@dom.(comment2)ain> (that's me)}
+lclpt:  ${local_part:a.b.c}
 quote:  ${quote:aZ09_.-Q} ${quote:ab*cd} ${quote:ab\cd"ef}
 quote:  ${quote:nl(\n)}
 quote:  ${quote:cr(\r)}
index 7ee82ca98bde1eb7f00f7df14b79f59676e17e08..a29296ca48e56a0269aeb1d0c78a37e1cc1aa158 100644 (file)
 > domain: dom.ain
 > domain: dom.ain
 > domain: dom.ain
+> domain: 
 > 
 > addresses: ''abc@xyz' ''pqr@xyz
 > addresses: local-part@dom.ain
@@ -237,6 +238,7 @@ newline     tab\134backslash ~tilde\177DEL\200\201.
 > lclpt:  local-part
 > lclpt:  local-part
 > lclpt:  local.part
+> lclpt:  a.b.c
 > quote:  aZ09_.-Q "ab*cd" "abcd\"ef"
 > quote:  "nl(\n)"
 > quote:  "cr(\r)"