summaryrefslogtreecommitdiff
path: root/test/confs/2620
diff options
context:
space:
mode:
authorJeremy Harris <jgh146exb@wizmail.org>2020-04-06 00:28:06 +0100
committerJeremy Harris <jgh146exb@wizmail.org>2020-04-06 13:14:05 +0100
commit0b4dfe7aa1f12214abdfa1037497d6c49a471612 (patch)
tree7a033655ce31568e0fd78417b4b98fa3143668cd /test/confs/2620
parentba74fb8d95d2e9af2122e0a95c4d5334b4f0466c (diff)
MySQL, pgsql: per-query server options outside the lookup string. Bug 2546
Diffstat (limited to 'test/confs/2620')
-rw-r--r--test/confs/262026
1 files changed, 25 insertions, 1 deletions
diff --git a/test/confs/2620 b/test/confs/2620
index 009e74fd8..e63fca286 100644
--- a/test/confs/2620
+++ b/test/confs/2620
@@ -1,6 +1,7 @@
# Exim test configuration 2620
-SERVERS=localhost::PORT_N/test/CALLER/
+PARTIAL=localhost::PORT_N
+SERVERS=PARTIAL/test/CALLER/
.include DIR/aux-var/std_conf_prefix
@@ -22,6 +23,29 @@ pgsql_servers = SERVERS
begin acl
check_recipient:
+ # Tainted-data checks
+ warn
+ # taint only in lookup string
+ set acl_m0 = ok: ${lookup pgsql {select name from them where id = '$local_part'}}
+ # option on lookup type unaffected
+ set acl_m0 = ok: ${lookup pgsql,servers=SSPEC {select name from them where id = '$local_part'}}
+ # partial server-spec, indexing main-option, works
+ set acl_m0 = ok: ${lookup pgsql,servers=PARTIAL {select name from them where id = '$local_part'}}
+ # oldstyle server spec, prepended to lookup string, fails with taint
+ set acl_m0 = FAIL: ${lookup pgsql {servers=SSPEC; select name from them where id = '$local_part'}}
+
+ # In list-stle lookup, tainted lookup string is ok if server spec comes from main-option
+ warn set acl_m0 = ok: hostlist
+ hosts = net-pgsql;select * from them where id='$local_part'
+ # ... but setting a per-query servers spec fails due to the taint
+ warn set acl_m0 = FAIL: hostlist
+ hosts = <& net-pgsql;servers=SSPEC; select * from them where id='$local_part'
+
+ # The newer server-list-as-option-to-lookup-type is not a solution to tainted data in the lookup, because
+ # string-expansion is done before list-expansion so the taint contaminates the entire list.
+ warn set acl_m0 = FAIL: hostlist
+ hosts = <& net-pgsql,servers=SSPEC; select * from them where id='$local_part'
+
accept domains = +local_domains
accept hosts = +relay_hosts
deny message = relay not permitted