ACL: taint-enforce queue modifier
authorJeremy Harris <jgh146exb@wizmail.org>
Sat, 11 Jan 2020 21:51:42 +0000 (21:51 +0000)
committerJeremy Harris <jgh146exb@wizmail.org>
Sat, 11 Jan 2020 21:51:42 +0000 (21:51 +0000)
doc/doc-txt/ChangeLog
src/src/acl.c
test/confs/0576

index 368d37e..29059ff 100644 (file)
@@ -92,6 +92,7 @@ JH/20 Taint checking: disallow use of tainted data for
       - the pipe transport command
       - the autoreply transport file, log and once options
       - file names used by the redirect router (including filter files)
+      - named-queue names
       Previously this was permitted.
 
 
index 7284831..3166069 100644 (file)
@@ -3590,6 +3590,12 @@ for (; cb; cb = cb->next)
     #endif
 
     case ACLC_QUEUE:
+    if (is_tainted(arg))
+      {
+      *log_msgptr = string_sprintf("Tainted name '%s' for queue not permitted",
+                                   arg);
+      return ERROR;
+      }
     if (Ustrchr(arg, '/'))
       {
       *log_msgptr = string_sprintf(
index b75b678..5b023d2 100644 (file)
@@ -16,7 +16,7 @@ begin acl
 
 rcpt:
   accept
-    queue = ${if eq {normal}{$local_part} {} {$local_part}}
+    queue = ${if eq {normal}{$local_part} {} {${bless:$local_part}}}
     logwrite = using queue '$queue_name'
 
 #---------------