Taint: reject or log more tainted list metadata elements
[exim.git] / test / stderr / 0632
index a01ed1b66e00f37a6d62303a7c6049dbf9b2e755..339bca7b6e376ea9459dc2fc19fb8d003d486874 100644 (file)
@@ -1,6 +1,7 @@
 
 ******** SERVER ********
 Exim version x.yz ....
+Hints DB:
 environment after trimming:
  PATH=<munged>
 adding SSLKEYLOGFILE=TESTSUITE/spool/sslkeys
@@ -49,6 +50,7 @@ p1235  ├──────value: Tue,░2░Mar░1999░09:44:33░+0000
 p1235  ├───expanded: $smtp_active_hostname░ESMTP░Exim░$version_number░$tod_full
 p1235  ╰─────result: myhost.test.ex░ESMTP░Exim░x.yz░Tue,░2░Mar░1999░09:44:33░+0000
 p1235 Process p1235 is ready for new message
+p1235 test.ex in helo_lookup_domains? no (end of list)
 p1235 try option acl_smtp_helo
 p1235 try option acl_smtp_mail
 p1235 try option acl_smtp_rcpt
@@ -62,75 +64,79 @@ p1235  ├considering: /exim_daemon_notify
 p1235  ├───────text: /exim_daemon_notify
 p1235  ├───expanded: $spool_directory/exim_daemon_notify
 p1235  ╰─────result: TESTSUITE/spool/exim_daemon_notify
+p1235 test.ex in "^nomatch_list"? no (end of list)
 p1235  ╭considering: ${if░match░{a_random_string}░{static_RE}}
-p1235   ╭considering: a_random_string}░{static_RE}}
-p1235   ├───────text: a_random_string
-p1235   ├considering: }░{static_RE}}
-p1235   ├───expanded: a_random_string
-p1235   ╰─────result: a_random_string
-p1235   ╭considering: static_RE}}
-p1235   ├───────text: static_RE
-p1235   ├considering: }}
-p1235   ├───expanded: static_RE
-p1235   ╰─────result: static_RE
-p1235  compiled RE 'static_RE' not found in local cache
-p1235  compiling RE 'static_RE'
-p1235  compiled RE 'static_RE' saved in local cache
-p1235  sending RE 'static_RE' to daemon
+p1235   cond: match
+p1235    ╭considering: a_random_string}░{static_RE}}
+p1235    ├───────text: a_random_string
+p1235    ├considering: }░{static_RE}}
+p1235    ├───expanded: a_random_string
+p1235    ╰─────result: a_random_string
+p1235    ╭considering: static_RE}}
+p1235    ├───────text: static_RE
+p1235    ├considering: }}
+p1235    ├───expanded: static_RE
+p1235    ╰─────result: static_RE
+p1235   compiled RE 'static_RE' not found in local cache
+p1235   compiling RE 'static_RE'
+p1235   compiled RE 'static_RE' saved in local cache
+p1235   sending RE 'static_RE' to daemon
 p1235 try option notifier_socket
-p1235   ╭considering: $spool_directory/exim_daemon_notify
-p1235   ├──────value: TESTSUITE/spool
-p1235   ├considering: /exim_daemon_notify
-p1235   ├───────text: /exim_daemon_notify
-p1235   ├───expanded: $spool_directory/exim_daemon_notify
-p1235   ╰─────result: TESTSUITE/spool/exim_daemon_notify
+p1235    ╭considering: $spool_directory/exim_daemon_notify
+p1235    ├──────value: TESTSUITE/spool
+p1235    ├considering: /exim_daemon_notify
+p1235    ├───────text: /exim_daemon_notify
+p1235    ├───expanded: $spool_directory/exim_daemon_notify
+p1235    ╰─────result: TESTSUITE/spool/exim_daemon_notify
 p1235  ├──condition: match░{a_random_string}░{static_RE}
 p1235  ├─────result: false
 p1235  ├───expanded: ${if░match░{a_random_string}░{static_RE}}
 p1235  ╰─────result: 
 p1235  ╭considering: ${if░match░{a_random_string}░{tricky_static_RE\$}}
-p1235   ╭considering: a_random_string}░{tricky_static_RE\$}}
-p1235   ├───────text: a_random_string
-p1235   ├considering: }░{tricky_static_RE\$}}
-p1235   ├───expanded: a_random_string
-p1235   ╰─────result: a_random_string
-p1235   ╭considering: tricky_static_RE\$}}
-p1235   ├───────text: tricky_static_RE
-p1235   ├considering: \$}}
-p1235   ├backslashed: '\$'
-p1235   ├considering: }}
-p1235   ├───expanded: tricky_static_RE\$
-p1235   ╰─────result: tricky_static_RE$
-p1235  compiled RE 'tricky_static_RE$' not found in local cache
-p1235  compiling RE 'tricky_static_RE$'
-p1235  compiled RE 'tricky_static_RE$' saved in local cache
-p1235  sending RE 'tricky_static_RE$' to daemon
+p1235   cond: match
+p1235    ╭considering: a_random_string}░{tricky_static_RE\$}}
+p1235    ├───────text: a_random_string
+p1235    ├considering: }░{tricky_static_RE\$}}
+p1235    ├───expanded: a_random_string
+p1235    ╰─────result: a_random_string
+p1235    ╭considering: tricky_static_RE\$}}
+p1235    ├───────text: tricky_static_RE
+p1235    ├considering: \$}}
+p1235    ├backslashed: '\$'
+p1235    ├considering: }}
+p1235    ├───expanded: tricky_static_RE\$
+p1235    ╰─────result: tricky_static_RE$
+p1235   compiled RE 'tricky_static_RE$' not found in local cache
+p1235   compiling RE 'tricky_static_RE$'
+p1235   compiled RE 'tricky_static_RE$' saved in local cache
+p1235   sending RE 'tricky_static_RE$' to daemon
 p1235 try option notifier_socket
-p1235   ╭considering: $spool_directory/exim_daemon_notify
-p1235   ├──────value: TESTSUITE/spool
-p1235   ├considering: /exim_daemon_notify
-p1235   ├───────text: /exim_daemon_notify
-p1235   ├───expanded: $spool_directory/exim_daemon_notify
-p1235   ╰─────result: TESTSUITE/spool/exim_daemon_notify
+p1235    ╭considering: $spool_directory/exim_daemon_notify
+p1235    ├──────value: TESTSUITE/spool
+p1235    ├considering: /exim_daemon_notify
+p1235    ├───────text: /exim_daemon_notify
+p1235    ├───expanded: $spool_directory/exim_daemon_notify
+p1235    ╰─────result: TESTSUITE/spool/exim_daemon_notify
 p1235  ├──condition: match░{a_random_string}░{tricky_static_RE\$}
 p1235  ├─────result: false
 p1235  ├───expanded: ${if░match░{a_random_string}░{tricky_static_RE\$}}
 p1235  ╰─────result: 
 p1235  ╭considering: ${if░match░{a_random_string}░{pid=${pid}░uncacheable_RE}}
-p1235   ╭considering: a_random_string}░{pid=${pid}░uncacheable_RE}}
-p1235   ├───────text: a_random_string
-p1235   ├considering: }░{pid=${pid}░uncacheable_RE}}
-p1235   ├───expanded: a_random_string
-p1235   ╰─────result: a_random_string
-p1235   ╭considering: pid=${pid}░uncacheable_RE}}
-p1235   ├───────text: pid=
-p1235   ├considering: ${pid}░uncacheable_RE}}
-p1235   ├considering: ░uncacheable_RE}}
-p1235   ├───────text: ░uncacheable_RE
-p1235   ├considering: }}
-p1235   ├───expanded: pid=${pid}░uncacheable_RE
-p1235   ╰─────result: pid=p1235░uncacheable_RE
-p1235  compiling RE 'pid=p1235 uncacheable_RE'
+p1235   cond: match
+p1235    ╭considering: a_random_string}░{pid=${pid}░uncacheable_RE}}
+p1235    ├───────text: a_random_string
+p1235    ├considering: }░{pid=${pid}░uncacheable_RE}}
+p1235    ├───expanded: a_random_string
+p1235    ╰─────result: a_random_string
+p1235    ╭considering: pid=${pid}░uncacheable_RE}}
+p1235    ├───────text: pid=
+p1235    ├considering: ${pid}░uncacheable_RE}}
+p1235    ├considering: ░uncacheable_RE}}
+p1235    ├───────text: ░uncacheable_RE
+p1235    ├considering: }}
+p1235    ├───expanded: pid=${pid}░uncacheable_RE
+p1235    ╰─────result: pid=p1235░uncacheable_RE
+p1235   compiling RE 'pid=p1235 uncacheable_RE'
 p1235  ├──condition: match░{a_random_string}░{pid=${pid}░uncacheable_RE}
 p1235  ├─────result: false
 p1235  ├───expanded: ${if░match░{a_random_string}░{pid=${pid}░uncacheable_RE}}
@@ -157,6 +163,7 @@ p1235  ␉}}(Exim░$version_number)↩
 p1235  ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
 p1235  ␉}}id░$message_exim_id${if░def:received_for░{↩
 p1235  ␉for░$received_for}}
+p1235   cond: def
 p1235  ├──condition: def:sender_rcvhost
 p1235  ├─────result: true
 p1235   ╭considering: from░$sender_rcvhost↩
@@ -202,6 +209,7 @@ p1235   ␉}}(Exim░$version_number)↩
 p1235   ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
 p1235   ␉}}id░$message_exim_id${if░def:received_for░{↩
 p1235   ␉for░$received_for}}
+p1235    cond: def
 p1235   ├──condition: def:sender_ident
 p1235   ├─────result: false
 p1235    ╭───scanning: from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
@@ -256,6 +264,7 @@ p1235   ␉}}(Exim░$version_number)↩
 p1235   ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
 p1235   ␉}}id░$message_exim_id${if░def:received_for░{↩
 p1235   ␉for░$received_for}}
+p1235    cond: def
 p1235   ├──condition: def:sender_helo_name
 p1235   ├─────result: false
 p1235    ╭───scanning: (helo=$sender_helo_name)↩
@@ -325,6 +334,7 @@ p1235  ␉}}(Exim░$version_number)↩
 p1235  ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
 p1235  ␉}}id░$message_exim_id${if░def:received_for░{↩
 p1235  ␉for░$received_for}}
+p1235   cond: def
 p1235  ├──condition: def:received_protocol
 p1235  ├─────result: true
 p1235   ╭considering: with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
@@ -359,6 +369,7 @@ p1235  ␉}}(Exim░$version_number)↩
 p1235  ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
 p1235  ␉}}id░$message_exim_id${if░def:received_for░{↩
 p1235  ␉for░$received_for}}
+p1235   cond: def
 p1235   ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
 p1235   ␉}}id░$message_exim_id${if░def:received_for░{↩
 p1235   ␉for░$received_for}}
@@ -366,12 +377,12 @@ p1235   ├───expanded: ░($tls_in_ver)
 p1235   ├─────result:  ◀skipped▶
 p1235   ╰───skipping: result is not used
 p1235  ├───item-res: 
-p1235             ╰──(tainted)
 p1235  ├considering: ${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
 p1235  ␉}}(Exim░$version_number)↩
 p1235  ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
 p1235  ␉}}id░$message_exim_id${if░def:received_for░{↩
 p1235  ␉for░$received_for}}
+p1235   cond: def
 p1235  ├──condition: def:tls_in_cipher_std
 p1235  ├─────result: false
 p1235   ╭───scanning: ░tls░$tls_in_cipher_std↩
@@ -402,7 +413,6 @@ p1235   ␉
 p1235   ├─────result:  ◀skipped▶
 p1235   ╰───skipping: result is not used
 p1235  ├───item-res: 
-p1235             ╰──(tainted)
 p1235  ├considering: (Exim░$version_number)↩
 p1235  ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
 p1235  ␉}}id░$message_exim_id${if░def:received_for░{↩
@@ -422,6 +432,7 @@ p1235  ␉
 p1235  ├considering: ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
 p1235  ␉}}id░$message_exim_id${if░def:received_for░{↩
 p1235  ␉for░$received_for}}
+p1235   cond: def
 p1235  ├──condition: def:sender_address
 p1235  ├─────result: true
 p1235   ╭considering: (envelope-from░<$sender_address>)↩
@@ -456,6 +467,7 @@ p1235  ␉for░$received_for}}
 p1235  ├──────value: 10HmaX-000000005vi-0000
 p1235  ├considering: ${if░def:received_for░{↩
 p1235  ␉for░$received_for}}
+p1235   cond: def
 p1235  ├──condition: def:received_for
 p1235  ├─────result: true
 p1235   ╭considering: ↩
@@ -487,7 +499,6 @@ p1235  ␉(envelope-from░<CALLER@test.ex>)↩
 p1235  ␉id░10HmaX-000000005vi-0000↩
 p1235  ␉for░dest_1@test.ex
 p1235             ╰──(tainted)
-p1235 try option acl_smtp_dkim
 p1235 try option acl_smtp_data
 p1235  ╭considering: ${tod_full}
 p1235  ├───expanded: ${tod_full}
@@ -543,59 +554,64 @@ p1236  ├──────value: Tue,░2░Mar░1999░09:44:33░+0000
 p1236  ├───expanded: $smtp_active_hostname░ESMTP░Exim░$version_number░$tod_full
 p1236  ╰─────result: myhost.test.ex░ESMTP░Exim░x.yz░Tue,░2░Mar░1999░09:44:33░+0000
 p1236 Process p1236 is ready for new message
+p1236 test.ex in helo_lookup_domains? no (end of list)
 p1236 try option acl_smtp_helo
 p1236 try option acl_smtp_mail
 p1236 try option acl_smtp_rcpt
 p1236 compiled caseless RE '^nomatch_list' found in local cache
+p1236 test.ex in "^nomatch_list"? no (end of list)
 p1236  ╭considering: ${if░match░{a_random_string}░{static_RE}}
-p1236   ╭considering: a_random_string}░{static_RE}}
-p1236   ├───────text: a_random_string
-p1236   ├considering: }░{static_RE}}
-p1236   ├───expanded: a_random_string
-p1236   ╰─────result: a_random_string
-p1236   ╭considering: static_RE}}
-p1236   ├───────text: static_RE
-p1236   ├considering: }}
-p1236   ├───expanded: static_RE
-p1236   ╰─────result: static_RE
-p1236  compiled RE 'static_RE' found in local cache
+p1236   cond: match
+p1236    ╭considering: a_random_string}░{static_RE}}
+p1236    ├───────text: a_random_string
+p1236    ├considering: }░{static_RE}}
+p1236    ├───expanded: a_random_string
+p1236    ╰─────result: a_random_string
+p1236    ╭considering: static_RE}}
+p1236    ├───────text: static_RE
+p1236    ├considering: }}
+p1236    ├───expanded: static_RE
+p1236    ╰─────result: static_RE
+p1236   compiled RE 'static_RE' found in local cache
 p1236  ├──condition: match░{a_random_string}░{static_RE}
 p1236  ├─────result: false
 p1236  ├───expanded: ${if░match░{a_random_string}░{static_RE}}
 p1236  ╰─────result: 
 p1236  ╭considering: ${if░match░{a_random_string}░{tricky_static_RE\$}}
-p1236   ╭considering: a_random_string}░{tricky_static_RE\$}}
-p1236   ├───────text: a_random_string
-p1236   ├considering: }░{tricky_static_RE\$}}
-p1236   ├───expanded: a_random_string
-p1236   ╰─────result: a_random_string
-p1236   ╭considering: tricky_static_RE\$}}
-p1236   ├───────text: tricky_static_RE
-p1236   ├considering: \$}}
-p1236   ├backslashed: '\$'
-p1236   ├considering: }}
-p1236   ├───expanded: tricky_static_RE\$
-p1236   ╰─────result: tricky_static_RE$
-p1236  compiled RE 'tricky_static_RE$' found in local cache
+p1236   cond: match
+p1236    ╭considering: a_random_string}░{tricky_static_RE\$}}
+p1236    ├───────text: a_random_string
+p1236    ├considering: }░{tricky_static_RE\$}}
+p1236    ├───expanded: a_random_string
+p1236    ╰─────result: a_random_string
+p1236    ╭considering: tricky_static_RE\$}}
+p1236    ├───────text: tricky_static_RE
+p1236    ├considering: \$}}
+p1236    ├backslashed: '\$'
+p1236    ├considering: }}
+p1236    ├───expanded: tricky_static_RE\$
+p1236    ╰─────result: tricky_static_RE$
+p1236   compiled RE 'tricky_static_RE$' found in local cache
 p1236  ├──condition: match░{a_random_string}░{tricky_static_RE\$}
 p1236  ├─────result: false
 p1236  ├───expanded: ${if░match░{a_random_string}░{tricky_static_RE\$}}
 p1236  ╰─────result: 
 p1236  ╭considering: ${if░match░{a_random_string}░{pid=${pid}░uncacheable_RE}}
-p1236   ╭considering: a_random_string}░{pid=${pid}░uncacheable_RE}}
-p1236   ├───────text: a_random_string
-p1236   ├considering: }░{pid=${pid}░uncacheable_RE}}
-p1236   ├───expanded: a_random_string
-p1236   ╰─────result: a_random_string
-p1236   ╭considering: pid=${pid}░uncacheable_RE}}
-p1236   ├───────text: pid=
-p1236   ├considering: ${pid}░uncacheable_RE}}
-p1236   ├considering: ░uncacheable_RE}}
-p1236   ├───────text: ░uncacheable_RE
-p1236   ├considering: }}
-p1236   ├───expanded: pid=${pid}░uncacheable_RE
-p1236   ╰─────result: pid=p1236░uncacheable_RE
-p1236  compiling RE 'pid=p1236 uncacheable_RE'
+p1236   cond: match
+p1236    ╭considering: a_random_string}░{pid=${pid}░uncacheable_RE}}
+p1236    ├───────text: a_random_string
+p1236    ├considering: }░{pid=${pid}░uncacheable_RE}}
+p1236    ├───expanded: a_random_string
+p1236    ╰─────result: a_random_string
+p1236    ╭considering: pid=${pid}░uncacheable_RE}}
+p1236    ├───────text: pid=
+p1236    ├considering: ${pid}░uncacheable_RE}}
+p1236    ├considering: ░uncacheable_RE}}
+p1236    ├───────text: ░uncacheable_RE
+p1236    ├considering: }}
+p1236    ├───expanded: pid=${pid}░uncacheable_RE
+p1236    ╰─────result: pid=p1236░uncacheable_RE
+p1236   compiling RE 'pid=p1236 uncacheable_RE'
 p1236  ├──condition: match░{a_random_string}░{pid=${pid}░uncacheable_RE}
 p1236  ├─────result: false
 p1236  ├───expanded: ${if░match░{a_random_string}░{pid=${pid}░uncacheable_RE}}
@@ -622,6 +638,7 @@ p1236  ␉}}(Exim░$version_number)↩
 p1236  ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
 p1236  ␉}}id░$message_exim_id${if░def:received_for░{↩
 p1236  ␉for░$received_for}}
+p1236   cond: def
 p1236  ├──condition: def:sender_rcvhost
 p1236  ├─────result: true
 p1236   ╭considering: from░$sender_rcvhost↩
@@ -667,6 +684,7 @@ p1236   ␉}}(Exim░$version_number)↩
 p1236   ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
 p1236   ␉}}id░$message_exim_id${if░def:received_for░{↩
 p1236   ␉for░$received_for}}
+p1236    cond: def
 p1236   ├──condition: def:sender_ident
 p1236   ├─────result: false
 p1236    ╭───scanning: from░${quote_local_part:$sender_ident}░}}${if░def:sender_helo_name░{(helo=$sender_helo_name)↩
@@ -721,6 +739,7 @@ p1236   ␉}}(Exim░$version_number)↩
 p1236   ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
 p1236   ␉}}id░$message_exim_id${if░def:received_for░{↩
 p1236   ␉for░$received_for}}
+p1236    cond: def
 p1236   ├──condition: def:sender_helo_name
 p1236   ├─────result: false
 p1236    ╭───scanning: (helo=$sender_helo_name)↩
@@ -790,6 +809,7 @@ p1236  ␉}}(Exim░$version_number)↩
 p1236  ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
 p1236  ␉}}id░$message_exim_id${if░def:received_for░{↩
 p1236  ␉for░$received_for}}
+p1236   cond: def
 p1236  ├──condition: def:received_protocol
 p1236  ├─────result: true
 p1236   ╭considering: with░$received_protocol░}}${if░def:tls_in_ver░░░░░░░░{░($tls_in_ver)}}${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
@@ -824,6 +844,7 @@ p1236  ␉}}(Exim░$version_number)↩
 p1236  ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
 p1236  ␉}}id░$message_exim_id${if░def:received_for░{↩
 p1236  ␉for░$received_for}}
+p1236   cond: def
 p1236   ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
 p1236   ␉}}id░$message_exim_id${if░def:received_for░{↩
 p1236   ␉for░$received_for}}
@@ -831,12 +852,12 @@ p1236   ├───expanded: ░($tls_in_ver)
 p1236   ├─────result:  ◀skipped▶
 p1236   ╰───skipping: result is not used
 p1236  ├───item-res: 
-p1236             ╰──(tainted)
 p1236  ├considering: ${if░def:tls_in_cipher_std░{░tls░$tls_in_cipher_std↩
 p1236  ␉}}(Exim░$version_number)↩
 p1236  ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
 p1236  ␉}}id░$message_exim_id${if░def:received_for░{↩
 p1236  ␉for░$received_for}}
+p1236   cond: def
 p1236  ├──condition: def:tls_in_cipher_std
 p1236  ├─────result: false
 p1236   ╭───scanning: ░tls░$tls_in_cipher_std↩
@@ -867,7 +888,6 @@ p1236   ␉
 p1236   ├─────result:  ◀skipped▶
 p1236   ╰───skipping: result is not used
 p1236  ├───item-res: 
-p1236             ╰──(tainted)
 p1236  ├considering: (Exim░$version_number)↩
 p1236  ␉${if░def:sender_address░{(envelope-from░<$sender_address>)↩
 p1236  ␉}}id░$message_exim_id${if░def:received_for░{↩
@@ -887,6 +907,7 @@ p1236  ␉
 p1236  ├considering: ${if░def:sender_address░{(envelope-from░<$sender_address>)↩
 p1236  ␉}}id░$message_exim_id${if░def:received_for░{↩
 p1236  ␉for░$received_for}}
+p1236   cond: def
 p1236  ├──condition: def:sender_address
 p1236  ├─────result: true
 p1236   ╭considering: (envelope-from░<$sender_address>)↩
@@ -921,6 +942,7 @@ p1236  ␉for░$received_for}}
 p1236  ├──────value: 10HmaY-000000005vi-0000
 p1236  ├considering: ${if░def:received_for░{↩
 p1236  ␉for░$received_for}}
+p1236   cond: def
 p1236  ├──condition: def:received_for
 p1236  ├─────result: true
 p1236   ╭considering: ↩
@@ -952,7 +974,6 @@ p1236  ␉(envelope-from░<CALLER@test.ex>)↩
 p1236  ␉id░10HmaY-000000005vi-0000↩
 p1236  ␉for░dest_2@test.ex
 p1236             ╰──(tainted)
-p1236 try option acl_smtp_dkim
 p1236 try option acl_smtp_data
 p1236  ╭considering: ${tod_full}
 p1236  ├───expanded: ${tod_full}