Auths: fix possible OOB read in SPA authenticator. Bug 3001
[exim.git] / test / stderr / 0002
index 7dd84d8eba7cb1c5509eb3419cac5f74a4944931..7b9241b9965034b9d749d72bac13a17a8c082658 100644 (file)
@@ -3,36 +3,57 @@ configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
  ╭considering: primary_hostname: $primary_hostname
 admin user
 dropping to exim gid; retaining priv uid
  ╭considering: primary_hostname: $primary_hostname
+ ├───────text: primary_hostname: 
+ ├considering: $primary_hostname
  ├──expanding: primary_hostname: $primary_hostname
  ╰─────result: primary_hostname: myhost.test.ex
  ╭considering: sender_address: $sender_address
  ├──expanding: primary_hostname: $primary_hostname
  ╰─────result: primary_hostname: myhost.test.ex
  ╭considering: sender_address: $sender_address
+ ├───────text: sender_address: 
+ ├considering: $sender_address
  ├──expanding: sender_address: $sender_address
  ╰─────result: sender_address: sndr@dom
             ╰──(tainted)
  ╭considering: match:  ${if match{abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
  ├──expanding: sender_address: $sender_address
  ╰─────result: sender_address: sndr@dom
             ╰──(tainted)
  ╭considering: match:  ${if match{abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
+ ├───────text: match:  
+ ├considering: ${if match{abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
   ╭considering: abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
   ╭considering: abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
+  ├───────text: abcd
+  ├considering: }{\N^([ab]+)(\w+)$\N}{$2$1}fail}
   ├──expanding: abcd
   ╰─────result: abcd
   ╭considering: \N^([ab]+)(\w+)$\N}{$2$1}fail}
   ├──expanding: abcd
   ╰─────result: abcd
   ╭considering: \N^([ab]+)(\w+)$\N}{$2$1}fail}
+  ├──protected: ^([ab]+)(\w+)$
+  ├considering: }{$2$1}fail}
   ├──expanding: \N^([ab]+)(\w+)$\N
   ╰─────result: ^([ab]+)(\w+)$
  ├──condition: match{abcd}{\N^([ab]+)(\w+)$\N}
  ├─────result: true
   ╭considering: $2$1}fail}
   ├──expanding: \N^([ab]+)(\w+)$\N
   ╰─────result: ^([ab]+)(\w+)$
  ├──condition: match{abcd}{\N^([ab]+)(\w+)$\N}
  ├─────result: true
   ╭considering: $2$1}fail}
+  ├considering: $1}fail}
+  ├considering: }fail}
   ├──expanding: $2$1
   ╰─────result: cdab
   ├──expanding: $2$1
   ╰─────result: cdab
+ ├───item-res: cdab
  ├──expanding: match:  ${if match{abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
  ╰─────result: match:  cdab
  ╭considering: match:  ${if match{wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
  ├──expanding: match:  ${if match{abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
  ╰─────result: match:  cdab
  ╭considering: match:  ${if match{wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
+ ├───────text: match:  
+ ├considering: ${if match{wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
   ╭considering: wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
   ╭considering: wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
+  ├───────text: wxyz
+  ├considering: }{\N^([ab]+)(\w+)$\N}{$2$1}fail}
   ├──expanding: wxyz
   ╰─────result: wxyz
   ╭considering: \N^([ab]+)(\w+)$\N}{$2$1}fail}
   ├──expanding: wxyz
   ╰─────result: wxyz
   ╭considering: \N^([ab]+)(\w+)$\N}{$2$1}fail}
+  ├──protected: ^([ab]+)(\w+)$
+  ├considering: }{$2$1}fail}
   ├──expanding: \N^([ab]+)(\w+)$\N
   ╰─────result: ^([ab]+)(\w+)$
  ├──condition: match{wxyz}{\N^([ab]+)(\w+)$\N}
  ├─────result: false
   ╭───scanning: $2$1}fail}
   ├──expanding: \N^([ab]+)(\w+)$\N
   ╰─────result: ^([ab]+)(\w+)$
  ├──condition: match{wxyz}{\N^([ab]+)(\w+)$\N}
  ├─────result: false
   ╭───scanning: $2$1}fail}
+  ├───scanning: $1}fail}
+  ├───scanning: }fail}
   ├──expanding: $2$1
   ├─────result: 
   ╰───skipping: result is not used
   ├──expanding: $2$1
   ├─────result: 
   ╰───skipping: result is not used
@@ -41,35 +62,52 @@ dropping to exim gid; retaining priv uid
  ╰failure was forced
  ╭considering: ${if eq {1}{1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
   ╭considering: 1}{1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
  ╰failure was forced
  ╭considering: ${if eq {1}{1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
   ╭considering: 1}{1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
+  ├───────text: 1
+  ├considering: }{1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
   ├──expanding: 1
   ╰─────result: 1
   ╭considering: 1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
   ├──expanding: 1
   ╰─────result: 1
   ╭considering: 1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
+  ├───────text: 1
+  ├considering: }{yes}{${lookup{xx}lsearch{/non/exist}}}}
   ├──expanding: 1
   ╰─────result: 1
  ├──condition: eq {1}{1}
  ├─────result: true
   ╭considering: yes}{${lookup{xx}lsearch{/non/exist}}}}
   ├──expanding: 1
   ╰─────result: 1
  ├──condition: eq {1}{1}
  ├─────result: true
   ╭considering: yes}{${lookup{xx}lsearch{/non/exist}}}}
+  ├───────text: yes
+  ├considering: }{${lookup{xx}lsearch{/non/exist}}}}
   ├──expanding: yes
   ╰─────result: yes
   ╭───scanning: ${lookup{xx}lsearch{/non/exist}}}}
    ╭───scanning: xx}lsearch{/non/exist}}}}
   ├──expanding: yes
   ╰─────result: yes
   ╭───scanning: ${lookup{xx}lsearch{/non/exist}}}}
    ╭───scanning: xx}lsearch{/non/exist}}}}
+   ├───────text: xx
+   ├───scanning: }lsearch{/non/exist}}}}
    ├──expanding: xx
    ├─────result: xx
    ╰───skipping: result is not used
    ╭───scanning: /non/exist}}}}
    ├──expanding: xx
    ├─────result: xx
    ╰───skipping: result is not used
    ╭───scanning: /non/exist}}}}
+   ├───────text: /non/exist
+   ├───scanning: }}}}
    ├──expanding: /non/exist
    ├─────result: /non/exist
    ╰───skipping: result is not used
    ├──expanding: /non/exist
    ├─────result: /non/exist
    ╰───skipping: result is not used
+  ├───scanning: }}
   ├──expanding: ${lookup{xx}lsearch{/non/exist}}
   ├─────result: 
   ╰───skipping: result is not used
  ├──expanding: ${if eq {1}{1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
  ╰─────result: yes
  ╭considering: match_address:   ${if match_address{a.b.c}{a.b.c}{yes}{no}}
   ├──expanding: ${lookup{xx}lsearch{/non/exist}}
   ├─────result: 
   ╰───skipping: result is not used
  ├──expanding: ${if eq {1}{1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
  ╰─────result: yes
  ╭considering: match_address:   ${if match_address{a.b.c}{a.b.c}{yes}{no}}
+ ├───────text: match_address:   
+ ├considering: ${if match_address{a.b.c}{a.b.c}{yes}{no}}
   ╭considering: a.b.c}{a.b.c}{yes}{no}}
   ╭considering: a.b.c}{a.b.c}{yes}{no}}
+  ├───────text: a.b.c
+  ├considering: }{a.b.c}{yes}{no}}
   ├──expanding: a.b.c
   ╰─────result: a.b.c
   ╭considering: a.b.c}{yes}{no}}
   ├──expanding: a.b.c
   ╰─────result: a.b.c
   ╭considering: a.b.c}{yes}{no}}
+  ├───────text: a.b.c
+  ├considering: }{yes}{no}}
   ├──expanding: a.b.c
   ╰─────result: a.b.c
 LOG: MAIN PANIC
   ├──expanding: a.b.c
   ╰─────result: a.b.c
 LOG: MAIN PANIC
@@ -77,12 +115,17 @@ LOG: MAIN PANIC
  ├──condition: match_address{a.b.c}{a.b.c}
  ├─────result: false
   ╭───scanning: yes}{no}}
  ├──condition: match_address{a.b.c}{a.b.c}
  ├─────result: false
   ╭───scanning: yes}{no}}
+  ├───────text: yes
+  ├───scanning: }{no}}
   ├──expanding: yes
   ├─────result: yes
   ╰───skipping: result is not used
   ╭considering: no}}
   ├──expanding: yes
   ├─────result: yes
   ╰───skipping: result is not used
   ╭considering: no}}
+  ├───────text: no
+  ├considering: }}
   ├──expanding: no
   ╰─────result: no
   ├──expanding: no
   ╰─────result: no
+ ├───item-res: no
  ├──expanding: match_address:   ${if match_address{a.b.c}{a.b.c}{yes}{no}}
  ╰─────result: match_address:   no
 >>>>>>>>>>>>>>>> Exim pid=pppp (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
  ├──expanding: match_address:   ${if match_address{a.b.c}{a.b.c}{yes}{no}}
  ╰─────result: match_address:   no
 >>>>>>>>>>>>>>>> Exim pid=pppp (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
@@ -91,32 +134,51 @@ configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
  /considering: primary_hostname: $primary_hostname
 admin user
 dropping to exim gid; retaining priv uid
  /considering: primary_hostname: $primary_hostname
+ |-------text: primary_hostname: 
+ |considering: $primary_hostname
  |--expanding: primary_hostname: $primary_hostname
  \_____result: primary_hostname: myhost.test.ex
  /considering: match:  ${if match{abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
  |--expanding: primary_hostname: $primary_hostname
  \_____result: primary_hostname: myhost.test.ex
  /considering: match:  ${if match{abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
+ |-------text: match:  
+ |considering: ${if match{abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
   /considering: abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
   /considering: abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
+  |-------text: abcd
+  |considering: }{\N^([ab]+)(\w+)$\N}{$2$1}fail}
   |--expanding: abcd
   \_____result: abcd
   /considering: \N^([ab]+)(\w+)$\N}{$2$1}fail}
   |--expanding: abcd
   \_____result: abcd
   /considering: \N^([ab]+)(\w+)$\N}{$2$1}fail}
+  |--protected: ^([ab]+)(\w+)$
+  |considering: }{$2$1}fail}
   |--expanding: \N^([ab]+)(\w+)$\N
   \_____result: ^([ab]+)(\w+)$
  |--condition: match{abcd}{\N^([ab]+)(\w+)$\N}
  |-----result: true
   /considering: $2$1}fail}
   |--expanding: \N^([ab]+)(\w+)$\N
   \_____result: ^([ab]+)(\w+)$
  |--condition: match{abcd}{\N^([ab]+)(\w+)$\N}
  |-----result: true
   /considering: $2$1}fail}
+  |considering: $1}fail}
+  |considering: }fail}
   |--expanding: $2$1
   \_____result: cdab
   |--expanding: $2$1
   \_____result: cdab
+ |---item-res: cdab
  |--expanding: match:  ${if match{abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
  \_____result: match:  cdab
  /considering: match:  ${if match{wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
  |--expanding: match:  ${if match{abcd}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
  \_____result: match:  cdab
  /considering: match:  ${if match{wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
+ |-------text: match:  
+ |considering: ${if match{wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
   /considering: wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
   /considering: wxyz}{\N^([ab]+)(\w+)$\N}{$2$1}fail}
+  |-------text: wxyz
+  |considering: }{\N^([ab]+)(\w+)$\N}{$2$1}fail}
   |--expanding: wxyz
   \_____result: wxyz
   /considering: \N^([ab]+)(\w+)$\N}{$2$1}fail}
   |--expanding: wxyz
   \_____result: wxyz
   /considering: \N^([ab]+)(\w+)$\N}{$2$1}fail}
+  |--protected: ^([ab]+)(\w+)$
+  |considering: }{$2$1}fail}
   |--expanding: \N^([ab]+)(\w+)$\N
   \_____result: ^([ab]+)(\w+)$
  |--condition: match{wxyz}{\N^([ab]+)(\w+)$\N}
  |-----result: false
   /---scanning: $2$1}fail}
   |--expanding: \N^([ab]+)(\w+)$\N
   \_____result: ^([ab]+)(\w+)$
  |--condition: match{wxyz}{\N^([ab]+)(\w+)$\N}
  |-----result: false
   /---scanning: $2$1}fail}
+  |---scanning: $1}fail}
+  |---scanning: }fail}
   |--expanding: $2$1
   |-----result: 
   \___skipping: result is not used
   |--expanding: $2$1
   |-----result: 
   \___skipping: result is not used
@@ -125,35 +187,52 @@ dropping to exim gid; retaining priv uid
  \failure was forced
  /considering: ${if eq {1}{1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
   /considering: 1}{1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
  \failure was forced
  /considering: ${if eq {1}{1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
   /considering: 1}{1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
+  |-------text: 1
+  |considering: }{1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
   |--expanding: 1
   \_____result: 1
   /considering: 1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
   |--expanding: 1
   \_____result: 1
   /considering: 1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
+  |-------text: 1
+  |considering: }{yes}{${lookup{xx}lsearch{/non/exist}}}}
   |--expanding: 1
   \_____result: 1
  |--condition: eq {1}{1}
  |-----result: true
   /considering: yes}{${lookup{xx}lsearch{/non/exist}}}}
   |--expanding: 1
   \_____result: 1
  |--condition: eq {1}{1}
  |-----result: true
   /considering: yes}{${lookup{xx}lsearch{/non/exist}}}}
+  |-------text: yes
+  |considering: }{${lookup{xx}lsearch{/non/exist}}}}
   |--expanding: yes
   \_____result: yes
   /---scanning: ${lookup{xx}lsearch{/non/exist}}}}
    /---scanning: xx}lsearch{/non/exist}}}}
   |--expanding: yes
   \_____result: yes
   /---scanning: ${lookup{xx}lsearch{/non/exist}}}}
    /---scanning: xx}lsearch{/non/exist}}}}
+   |-------text: xx
+   |---scanning: }lsearch{/non/exist}}}}
    |--expanding: xx
    |-----result: xx
    \___skipping: result is not used
    /---scanning: /non/exist}}}}
    |--expanding: xx
    |-----result: xx
    \___skipping: result is not used
    /---scanning: /non/exist}}}}
+   |-------text: /non/exist
+   |---scanning: }}}}
    |--expanding: /non/exist
    |-----result: /non/exist
    \___skipping: result is not used
    |--expanding: /non/exist
    |-----result: /non/exist
    \___skipping: result is not used
+  |---scanning: }}
   |--expanding: ${lookup{xx}lsearch{/non/exist}}
   |-----result: 
   \___skipping: result is not used
  |--expanding: ${if eq {1}{1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
  \_____result: yes
  /considering: match_address:   ${if match_address{a.b.c}{a.b.c}{yes}{no}}
   |--expanding: ${lookup{xx}lsearch{/non/exist}}
   |-----result: 
   \___skipping: result is not used
  |--expanding: ${if eq {1}{1}{yes}{${lookup{xx}lsearch{/non/exist}}}}
  \_____result: yes
  /considering: match_address:   ${if match_address{a.b.c}{a.b.c}{yes}{no}}
+ |-------text: match_address:   
+ |considering: ${if match_address{a.b.c}{a.b.c}{yes}{no}}
   /considering: a.b.c}{a.b.c}{yes}{no}}
   /considering: a.b.c}{a.b.c}{yes}{no}}
+  |-------text: a.b.c
+  |considering: }{a.b.c}{yes}{no}}
   |--expanding: a.b.c
   \_____result: a.b.c
   /considering: a.b.c}{yes}{no}}
   |--expanding: a.b.c
   \_____result: a.b.c
   /considering: a.b.c}{yes}{no}}
+  |-------text: a.b.c
+  |considering: }{yes}{no}}
   |--expanding: a.b.c
   \_____result: a.b.c
 LOG: MAIN PANIC
   |--expanding: a.b.c
   \_____result: a.b.c
 LOG: MAIN PANIC
@@ -161,12 +240,17 @@ LOG: MAIN PANIC
  |--condition: match_address{a.b.c}{a.b.c}
  |-----result: false
   /---scanning: yes}{no}}
  |--condition: match_address{a.b.c}{a.b.c}
  |-----result: false
   /---scanning: yes}{no}}
+  |-------text: yes
+  |---scanning: }{no}}
   |--expanding: yes
   |-----result: yes
   \___skipping: result is not used
   /considering: no}}
   |--expanding: yes
   |-----result: yes
   \___skipping: result is not used
   /considering: no}}
+  |-------text: no
+  |considering: }}
   |--expanding: no
   \_____result: no
   |--expanding: no
   \_____result: no
+ |---item-res: no
  |--expanding: match_address:   ${if match_address{a.b.c}{a.b.c}{yes}{no}}
  \_____result: match_address:   no
 >>>>>>>>>>>>>>>> Exim pid=pppp (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
  |--expanding: match_address:   ${if match_address{a.b.c}{a.b.c}{yes}{no}}
  \_____result: match_address:   no
 >>>>>>>>>>>>>>>> Exim pid=pppp (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
@@ -175,36 +259,54 @@ configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
  ╭considering: -oMa  sender_host_address = $sender_host_address
 admin user
 dropping to exim gid; retaining priv uid
  ╭considering: -oMa  sender_host_address = $sender_host_address
+ ├───────text: -oMa  sender_host_address = 
+ ├considering: $sender_host_address
  ├──expanding: -oMa  sender_host_address = $sender_host_address
  ╰─────result: -oMa  sender_host_address = V4NET.0.0.1
             ╰──(tainted)
  ╭considering:       sender_host_port = $sender_host_port
  ├──expanding: -oMa  sender_host_address = $sender_host_address
  ╰─────result: -oMa  sender_host_address = V4NET.0.0.1
             ╰──(tainted)
  ╭considering:       sender_host_port = $sender_host_port
+ ├───────text:       sender_host_port = 
+ ├considering: $sender_host_port
  ├──expanding:       sender_host_port = $sender_host_port
  ╰─────result:       sender_host_port = 1234
  ╭considering: -oMaa sender_host_authenticated = $sender_host_authenticated
  ├──expanding:       sender_host_port = $sender_host_port
  ╰─────result:       sender_host_port = 1234
  ╭considering: -oMaa sender_host_authenticated = $sender_host_authenticated
+ ├───────text: -oMaa sender_host_authenticated = 
+ ├considering: $sender_host_authenticated
  ├──expanding: -oMaa sender_host_authenticated = $sender_host_authenticated
  ╰─────result: -oMaa sender_host_authenticated = AAA
             ╰──(tainted)
  ╭considering: -oMai authenticated_id = $authenticated_id
  ├──expanding: -oMaa sender_host_authenticated = $sender_host_authenticated
  ╰─────result: -oMaa sender_host_authenticated = AAA
             ╰──(tainted)
  ╭considering: -oMai authenticated_id = $authenticated_id
+ ├───────text: -oMai authenticated_id = 
+ ├considering: $authenticated_id
  ├──expanding: -oMai authenticated_id = $authenticated_id
  ╰─────result: -oMai authenticated_id = philip
             ╰──(tainted)
  ╭considering: -oMas authenticated_sender = $authenticated_sender
  ├──expanding: -oMai authenticated_id = $authenticated_id
  ╰─────result: -oMai authenticated_id = philip
             ╰──(tainted)
  ╭considering: -oMas authenticated_sender = $authenticated_sender
+ ├───────text: -oMas authenticated_sender = 
+ ├considering: $authenticated_sender
  ├──expanding: -oMas authenticated_sender = $authenticated_sender
  ╰─────result: -oMas authenticated_sender = xx@yy.zz
             ╰──(tainted)
  ╭considering: -oMi  interface_address = $interface_address
  ├──expanding: -oMas authenticated_sender = $authenticated_sender
  ╰─────result: -oMas authenticated_sender = xx@yy.zz
             ╰──(tainted)
  ╭considering: -oMi  interface_address = $interface_address
+ ├───────text: -oMi  interface_address = 
+ ├considering: $interface_address
  ├──expanding: -oMi  interface_address = $interface_address
  ╰─────result: -oMi  interface_address = 1.1.1.1
             ╰──(tainted)
  ╭considering:       interface_port = $interface_port
  ├──expanding: -oMi  interface_address = $interface_address
  ╰─────result: -oMi  interface_address = 1.1.1.1
             ╰──(tainted)
  ╭considering:       interface_port = $interface_port
+ ├───────text:       interface_port = 
+ ├considering: $interface_port
  ├──expanding:       interface_port = $interface_port
  ╰─────result:       interface_port = 99
  ╭considering: -oMr  received_protocol = $received_protocol
  ├──expanding:       interface_port = $interface_port
  ╰─────result:       interface_port = 99
  ╭considering: -oMr  received_protocol = $received_protocol
+ ├───────text: -oMr  received_protocol = 
+ ├considering: $received_protocol
  ├──expanding: -oMr  received_protocol = $received_protocol
  ╰─────result: -oMr  received_protocol = special
             ╰──(tainted)
  ╭considering: -oMt  sender_ident = $sender_ident
  ├──expanding: -oMr  received_protocol = $received_protocol
  ╰─────result: -oMr  received_protocol = special
             ╰──(tainted)
  ╭considering: -oMt  sender_ident = $sender_ident
+ ├───────text: -oMt  sender_ident = 
+ ├considering: $sender_ident
  ├──expanding: -oMt  sender_ident = $sender_ident
  ╰─────result: -oMt  sender_ident = me
             ╰──(tainted)
  ├──expanding: -oMt  sender_ident = $sender_ident
  ╰─────result: -oMt  sender_ident = me
             ╰──(tainted)
@@ -215,54 +317,82 @@ configuration file is TESTSUITE/test-config
 admin user
 dropping to exim gid; retaining priv uid
  ╭considering: -oMa  sender_host_address = $sender_host_address
 admin user
 dropping to exim gid; retaining priv uid
  ╭considering: -oMa  sender_host_address = $sender_host_address
+ ├───────text: -oMa  sender_host_address = 
+ ├considering: $sender_host_address
  ├──expanding: -oMa  sender_host_address = $sender_host_address
  ╰─────result: -oMa  sender_host_address = V4NET.0.0.1
             ╰──(tainted)
  ╭considering:       sender_host_port = $sender_host_port
  ├──expanding: -oMa  sender_host_address = $sender_host_address
  ╰─────result: -oMa  sender_host_address = V4NET.0.0.1
             ╰──(tainted)
  ╭considering:       sender_host_port = $sender_host_port
+ ├───────text:       sender_host_port = 
+ ├considering: $sender_host_port
  ├──expanding:       sender_host_port = $sender_host_port
  ╰─────result:       sender_host_port = 1234
  ╭considering: -oMaa sender_host_authenticated = $sender_host_authenticated
  ├──expanding:       sender_host_port = $sender_host_port
  ╰─────result:       sender_host_port = 1234
  ╭considering: -oMaa sender_host_authenticated = $sender_host_authenticated
+ ├───────text: -oMaa sender_host_authenticated = 
+ ├considering: $sender_host_authenticated
  ├──expanding: -oMaa sender_host_authenticated = $sender_host_authenticated
  ╰─────result: -oMaa sender_host_authenticated = AAA
             ╰──(tainted)
  ╭considering: -oMai authenticated_id = $authenticated_id
  ├──expanding: -oMaa sender_host_authenticated = $sender_host_authenticated
  ╰─────result: -oMaa sender_host_authenticated = AAA
             ╰──(tainted)
  ╭considering: -oMai authenticated_id = $authenticated_id
+ ├───────text: -oMai authenticated_id = 
+ ├considering: $authenticated_id
  ├──expanding: -oMai authenticated_id = $authenticated_id
  ╰─────result: -oMai authenticated_id = philip
             ╰──(tainted)
  ╭considering: -oMas authenticated_sender = $authenticated_sender
  ├──expanding: -oMai authenticated_id = $authenticated_id
  ╰─────result: -oMai authenticated_id = philip
             ╰──(tainted)
  ╭considering: -oMas authenticated_sender = $authenticated_sender
+ ├───────text: -oMas authenticated_sender = 
+ ├considering: $authenticated_sender
  ├──expanding: -oMas authenticated_sender = $authenticated_sender
  ╰─────result: -oMas authenticated_sender = xx@yy.zz
             ╰──(tainted)
  ╭considering: -oMi  interface_address = $interface_address
  ├──expanding: -oMas authenticated_sender = $authenticated_sender
  ╰─────result: -oMas authenticated_sender = xx@yy.zz
             ╰──(tainted)
  ╭considering: -oMi  interface_address = $interface_address
+ ├───────text: -oMi  interface_address = 
+ ├considering: $interface_address
  ├──expanding: -oMi  interface_address = $interface_address
  ╰─────result: -oMi  interface_address = 1.1.1.1
             ╰──(tainted)
  ╭considering:       interface_port = $interface_port
  ├──expanding: -oMi  interface_address = $interface_address
  ╰─────result: -oMi  interface_address = 1.1.1.1
             ╰──(tainted)
  ╭considering:       interface_port = $interface_port
+ ├───────text:       interface_port = 
+ ├considering: $interface_port
  ├──expanding:       interface_port = $interface_port
  ╰─────result:       interface_port = 99
  ╭considering: -oMr  received_protocol = $received_protocol
  ├──expanding:       interface_port = $interface_port
  ╰─────result:       interface_port = 99
  ╭considering: -oMr  received_protocol = $received_protocol
+ ├───────text: -oMr  received_protocol = 
+ ├considering: $received_protocol
  ├──expanding: -oMr  received_protocol = $received_protocol
  ╰─────result: -oMr  received_protocol = special
             ╰──(tainted)
  ╭considering: ----> No lookup yet: ${if eq{black}{white}{$sender_host_name}{No}}
  ├──expanding: -oMr  received_protocol = $received_protocol
  ╰─────result: -oMr  received_protocol = special
             ╰──(tainted)
  ╭considering: ----> No lookup yet: ${if eq{black}{white}{$sender_host_name}{No}}
+ ├───────text: ----> No lookup yet: 
+ ├considering: ${if eq{black}{white}{$sender_host_name}{No}}
   ╭considering: black}{white}{$sender_host_name}{No}}
   ╭considering: black}{white}{$sender_host_name}{No}}
+  ├───────text: black
+  ├considering: }{white}{$sender_host_name}{No}}
   ├──expanding: black
   ╰─────result: black
   ╭considering: white}{$sender_host_name}{No}}
   ├──expanding: black
   ╰─────result: black
   ╭considering: white}{$sender_host_name}{No}}
+  ├───────text: white
+  ├considering: }{$sender_host_name}{No}}
   ├──expanding: white
   ╰─────result: white
  ├──condition: eq{black}{white}
  ├─────result: false
   ╭───scanning: $sender_host_name}{No}}
   ├──expanding: white
   ╰─────result: white
  ├──condition: eq{black}{white}
  ├─────result: false
   ╭───scanning: $sender_host_name}{No}}
+  ├───scanning: }{No}}
   ├──expanding: $sender_host_name
   ├─────result: 
   ╰───skipping: result is not used
   ╭considering: No}}
   ├──expanding: $sender_host_name
   ├─────result: 
   ╰───skipping: result is not used
   ╭considering: No}}
+  ├───────text: No
+  ├considering: }}
   ├──expanding: No
   ╰─────result: No
   ├──expanding: No
   ╰─────result: No
+ ├───item-res: No
  ├──expanding: ----> No lookup yet: ${if eq{black}{white}{$sender_host_name}{No}}
  ╰─────result: ----> No lookup yet: No
  ╭considering: -oMs  sender_host_name = $sender_host_name
  ├──expanding: ----> No lookup yet: ${if eq{black}{white}{$sender_host_name}{No}}
  ╰─────result: ----> No lookup yet: No
  ╭considering: -oMs  sender_host_name = $sender_host_name
+ ├───────text: -oMs  sender_host_name = 
+ ├considering: $sender_host_name
 looking up host name for V4NET.0.0.1
 IP address lookup yielded "ten-1.test.ex"
 ten-1.test.ex V4NET.0.0.1 mx=-1 sort=xx 
 looking up host name for V4NET.0.0.1
 IP address lookup yielded "ten-1.test.ex"
 ten-1.test.ex V4NET.0.0.1 mx=-1 sort=xx 
@@ -274,6 +404,8 @@ sender_rcvhost = ten-1.test.ex ([V4NET.0.0.1] ident=me)
  ╰─────result: -oMs  sender_host_name = ten-1.test.ex
             ╰──(tainted)
  ╭considering: -oMt  sender_ident = $sender_ident
  ╰─────result: -oMs  sender_host_name = ten-1.test.ex
             ╰──(tainted)
  ╭considering: -oMt  sender_ident = $sender_ident
+ ├───────text: -oMt  sender_ident = 
+ ├considering: $sender_ident
  ├──expanding: -oMt  sender_ident = $sender_ident
  ╰─────result: -oMt  sender_ident = me
             ╰──(tainted)
  ├──expanding: -oMt  sender_ident = $sender_ident
  ╰─────result: -oMt  sender_ident = me
             ╰──(tainted)
@@ -318,14 +450,15 @@ sender_fullhost = ten-1.test.ex [V4NET.0.0.1]
 sender_rcvhost = ten-1.test.ex ([V4NET.0.0.1])
 search_open: lsearch "TESTSUITE/aux-fixed/0002.lsearch"
 search_find: file="TESTSUITE/aux-fixed/0002.lsearch"
 sender_rcvhost = ten-1.test.ex ([V4NET.0.0.1])
 search_open: lsearch "TESTSUITE/aux-fixed/0002.lsearch"
 search_find: file="TESTSUITE/aux-fixed/0002.lsearch"
-  key="ten-1.test.ex" partial=2 affix=*. starflags=0
+  key="ten-1.test.ex" partial=2 affix=*. starflags=0 opts=NULL
 LRU list:
   0TESTSUITE/aux-fixed/0002.lsearch
   End
 internal_search_find: file="TESTSUITE/aux-fixed/0002.lsearch"
 LRU list:
   0TESTSUITE/aux-fixed/0002.lsearch
   End
 internal_search_find: file="TESTSUITE/aux-fixed/0002.lsearch"
-  type=lsearch key="ten-1.test.ex"
+  type=lsearch key="ten-1.test.ex" opts=NULL
 file lookup required for ten-1.test.ex
   in TESTSUITE/aux-fixed/0002.lsearch
 file lookup required for ten-1.test.ex
   in TESTSUITE/aux-fixed/0002.lsearch
+creating new cache entry
 lookup yielded: 
 host in "<
  partial-lsearch;TESTSUITE/aux-fixed/0002.lsearch 
 lookup yielded: 
 host in "<
  partial-lsearch;TESTSUITE/aux-fixed/0002.lsearch 
@@ -364,14 +497,15 @@ processing "deny" (TESTSUITE/test-config 48)
 check hosts = net-lsearch;TESTSUITE/aux-fixed/0002.lsearch
 search_open: lsearch "TESTSUITE/aux-fixed/0002.lsearch"
 search_find: file="TESTSUITE/aux-fixed/0002.lsearch"
 check hosts = net-lsearch;TESTSUITE/aux-fixed/0002.lsearch
 search_open: lsearch "TESTSUITE/aux-fixed/0002.lsearch"
 search_find: file="TESTSUITE/aux-fixed/0002.lsearch"
-  key="V4NET.0.0.2" partial=-1 affix=NULL starflags=0
+  key="V4NET.0.0.2" partial=-1 affix=NULL starflags=0 opts=NULL
 LRU list:
   0TESTSUITE/aux-fixed/0002.lsearch
   End
 internal_search_find: file="TESTSUITE/aux-fixed/0002.lsearch"
 LRU list:
   0TESTSUITE/aux-fixed/0002.lsearch
   End
 internal_search_find: file="TESTSUITE/aux-fixed/0002.lsearch"
-  type=lsearch key="V4NET.0.0.2"
+  type=lsearch key="V4NET.0.0.2" opts=NULL
 file lookup required for V4NET.0.0.2
   in TESTSUITE/aux-fixed/0002.lsearch
 file lookup required for V4NET.0.0.2
   in TESTSUITE/aux-fixed/0002.lsearch
+creating new cache entry
 lookup failed
 host in "net-lsearch;TESTSUITE/aux-fixed/0002.lsearch"? no (end of list)
 deny: condition test failed in ACL "connect2"
 lookup failed
 host in "net-lsearch;TESTSUITE/aux-fixed/0002.lsearch"? no (end of list)
 deny: condition test failed in ACL "connect2"
@@ -393,6 +527,7 @@ search_tidyup called
 >>> processing "accept" (TESTSUITE/test-config 42)
 >>> accept: condition test succeeded in ACL "connect0"
 >>> end of ACL "connect0": ACCEPT
 >>> processing "accept" (TESTSUITE/test-config 42)
 >>> accept: condition test succeeded in ACL "connect0"
 >>> end of ACL "connect0": ACCEPT
+>>> test in helo_lookup_domains? no (end of list)
 >>> processing "accept" (TESTSUITE/test-config 70)
 >>> accept: condition test succeeded in inline ACL
 >>> end of inline ACL: ACCEPT
 >>> processing "accept" (TESTSUITE/test-config 70)
 >>> accept: condition test succeeded in inline ACL
 >>> end of inline ACL: ACCEPT
@@ -406,7 +541,7 @@ LOG: 10HmaX-0005vi-00 Subject is: ""
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
-LOG: 10HmaX-0005vi-00 H=[V4NET.0.0.0] F=<> rejected after DATA: reply_address=<>
+LOG: 10HmaX-0005vi-00 H=(test) [V4NET.0.0.0] F=<> rejected after DATA: reply_address=<>
 >>> processing "accept" (TESTSUITE/test-config 70)
 >>> accept: condition test succeeded in inline ACL
 >>> end of inline ACL: ACCEPT
 >>> processing "accept" (TESTSUITE/test-config 70)
 >>> accept: condition test succeeded in inline ACL
 >>> end of inline ACL: ACCEPT
@@ -421,7 +556,7 @@ LOG: 10HmaY-0005vi-00 Subject is: ""
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
-LOG: 10HmaY-0005vi-00 H=[V4NET.0.0.0] F=<> rejected after DATA: reply_address=<a@b>
+LOG: 10HmaY-0005vi-00 H=(test) [V4NET.0.0.0] F=<> rejected after DATA: reply_address=<a@b>
 >>> processing "accept" (TESTSUITE/test-config 70)
 >>> accept: condition test succeeded in inline ACL
 >>> end of inline ACL: ACCEPT
 >>> processing "accept" (TESTSUITE/test-config 70)
 >>> accept: condition test succeeded in inline ACL
 >>> end of inline ACL: ACCEPT
@@ -436,7 +571,7 @@ LOG: 10HmaZ-0005vi-00 Subject is: ""
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
-LOG: 10HmaZ-0005vi-00 H=[V4NET.0.0.0] F=<> rejected after DATA: reply_address=<c@d>
+LOG: 10HmaZ-0005vi-00 H=(test) [V4NET.0.0.0] F=<> rejected after DATA: reply_address=<c@d>
 >>> processing "accept" (TESTSUITE/test-config 70)
 >>> accept: condition test succeeded in inline ACL
 >>> end of inline ACL: ACCEPT
 >>> processing "accept" (TESTSUITE/test-config 70)
 >>> accept: condition test succeeded in inline ACL
 >>> end of inline ACL: ACCEPT
@@ -451,7 +586,7 @@ LOG: 10HmbA-0005vi-00 Subject is: ""
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
-LOG: 10HmbA-0005vi-00 H=[V4NET.0.0.0] F=<> rejected after DATA: reply_address=<>
+LOG: 10HmbA-0005vi-00 H=(test) [V4NET.0.0.0] F=<> rejected after DATA: reply_address=<>
 >>> processing "accept" (TESTSUITE/test-config 70)
 >>> accept: condition test succeeded in inline ACL
 >>> end of inline ACL: ACCEPT
 >>> processing "accept" (TESTSUITE/test-config 70)
 >>> accept: condition test succeeded in inline ACL
 >>> end of inline ACL: ACCEPT
@@ -466,7 +601,7 @@ LOG: 10HmbB-0005vi-00 Subject is: ""
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
-LOG: 10HmbB-0005vi-00 H=[V4NET.0.0.0] F=<> rejected after DATA: reply_address=<x@y>
+LOG: 10HmbB-0005vi-00 H=(test) [V4NET.0.0.0] F=<> rejected after DATA: reply_address=<x@y>
 >>> host in hosts_connection_nolog? no (option unset)
 >>> host in host_lookup? no (option unset)
 >>> host in host_reject_connection? no (option unset)
 >>> host in hosts_connection_nolog? no (option unset)
 >>> host in host_lookup? no (option unset)
 >>> host in host_reject_connection? no (option unset)
@@ -479,6 +614,7 @@ LOG: 10HmbB-0005vi-00 H=[V4NET.0.0.0] F=<> rejected after DATA: reply_address=<x
 >>> processing "accept" (TESTSUITE/test-config 42)
 >>> accept: condition test succeeded in ACL "connect0"
 >>> end of ACL "connect0": ACCEPT
 >>> processing "accept" (TESTSUITE/test-config 42)
 >>> accept: condition test succeeded in ACL "connect0"
 >>> end of ACL "connect0": ACCEPT
+>>> test in helo_lookup_domains? no (end of list)
 >>> processing "accept" (TESTSUITE/test-config 70)
 >>> accept: condition test succeeded in inline ACL
 >>> end of inline ACL: ACCEPT
 >>> processing "accept" (TESTSUITE/test-config 70)
 >>> accept: condition test succeeded in inline ACL
 >>> end of inline ACL: ACCEPT
@@ -493,7 +629,7 @@ LOG: 10HmbC-0005vi-00 Subject is: "=?iso-8859-8?Q?_here_we_go=3A_a_string_that_i
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
-LOG: 10HmbC-0005vi-00 H=[V4NET.0.0.0] F=<> rejected after DATA: reply_address=<>
+LOG: 10HmbC-0005vi-00 H=(test) [V4NET.0.0.0] F=<> rejected after DATA: reply_address=<>
 >>> host in hosts_connection_nolog? no (option unset)
 >>> host in host_lookup? no (option unset)
 >>> host in host_reject_connection? no (option unset)
 >>> host in hosts_connection_nolog? no (option unset)
 >>> host in host_lookup? no (option unset)
 >>> host in host_reject_connection? no (option unset)
@@ -506,6 +642,7 @@ LOG: 10HmbC-0005vi-00 H=[V4NET.0.0.0] F=<> rejected after DATA: reply_address=<>
 >>> processing "accept" (TESTSUITE/test-config 42)
 >>> accept: condition test succeeded in ACL "connect0"
 >>> end of ACL "connect0": ACCEPT
 >>> processing "accept" (TESTSUITE/test-config 42)
 >>> accept: condition test succeeded in ACL "connect0"
 >>> end of ACL "connect0": ACCEPT
+>>> test in helo_lookup_domains? no (end of list)
 >>> processing "accept" (TESTSUITE/test-config 70)
 >>> accept: condition test succeeded in inline ACL
 >>> end of inline ACL: ACCEPT
 >>> processing "accept" (TESTSUITE/test-config 70)
 >>> accept: condition test succeeded in inline ACL
 >>> end of inline ACL: ACCEPT
@@ -520,7 +657,7 @@ LOG: 10HmbD-0005vi-00 Subject is: " here we go: a string that is going to be enc
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
 >>>   message: reply_address=<$reply_address>
 >>> deny: condition test succeeded in ACL "check_data"
 >>> end of ACL "check_data": DENY
-LOG: 10HmbD-0005vi-00 H=[V4NET.0.0.0] F=<> rejected after DATA: reply_address=<>
+LOG: 10HmbD-0005vi-00 H=(test) [V4NET.0.0.0] F=<> rejected after DATA: reply_address=<>
 Exim version x.yz ....
 changed uid/gid: -C, -D, -be or -bf forces real uid
   uid=CALLER_UID gid=CALLER_GID pid=pppp
 Exim version x.yz ....
 changed uid/gid: -C, -D, -be or -bf forces real uid
   uid=CALLER_UID gid=CALLER_GID pid=pppp
@@ -529,7 +666,7 @@ admin user
 dropping to exim gid; retaining priv uid
 originator: uid=CALLER_UID gid=CALLER_GID login=CALLER name=CALLER_NAME
 sender address = CALLER@myhost.test.ex
 dropping to exim gid; retaining priv uid
 originator: uid=CALLER_UID gid=CALLER_GID login=CALLER name=CALLER_NAME
 sender address = CALLER@myhost.test.ex
-1.2.3.4 in "1.2.3"? no (malformed IPv4 address or address mask)
-1.2.3.4 in "1.2.3.4/abc"? no (malformed IPv4 address or address mask)
+ 1.2.3.4 in "1.2.3"? no (malformed IPv4 address or address mask)
+ 1.2.3.4 in "1.2.3.4/abc"? no (malformed IPv4 address or address mask)
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=pppp (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>
 search_tidyup called
 >>>>>>>>>>>>>>>> Exim pid=pppp (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>