Fix listing a named queue by a non-admin user. Bug 2398
authorJeremy Harris <jgh146exb@wizmail.org>
Fri, 10 May 2019 14:18:56 +0000 (15:18 +0100)
committerJeremy Harris <jgh146exb@wizmail.org>
Fri, 10 May 2019 14:33:49 +0000 (15:33 +0100)
doc/doc-txt/ChangeLog
src/src/exim.c
src/src/queue.c
test/scripts/0000-Basic/0576
test/stdout/0576

index 05f2545bcb5e30460912aee2e526e70105bb7ee1..a204b37846f33a1e203536653e58ba56f4303934 100644 (file)
@@ -94,6 +94,10 @@ JH/17 OpenSSL: the default openssl_options now disables ssl_v3.
 JH/18 GnuTLS: fix $tls_out_ocsp under hosts_request_ocsp. Previously the
       verification result was not updated unless hosts_require_ocsp applied.
 
+JH/19 Bug 2398: fix listing of a named-queue.  Previously, even with the option
+      queue_list_requires_admin set to false, non-admin users were denied the
+      facility.
+
 
 Exim version 4.92
 -----------------
index 1952d91a46fb4a1965c67cc117d36a31c4c67564..1aa32b26986a5e41718409b876767bc6305f71b0 100644 (file)
@@ -3193,22 +3193,23 @@ for (i = 1; i < argc; i++)
     /* -q[f][f][l][G<name>]: Run the queue, optionally forced, optionally local
     only, optionally named, optionally starting from a given message id. */
 
-    if (*argrest == 0 &&
-        (i + 1 >= argc || argv[i+1][0] == '-' || mac_ismsgid(argv[i+1])))
-      {
-      queue_interval = 0;
-      if (i+1 < argc && mac_ismsgid(argv[i+1]))
-        start_queue_run_id = argv[++i];
-      if (i+1 < argc && mac_ismsgid(argv[i+1]))
-        stop_queue_run_id = argv[++i];
-      }
+    if (!(list_queue || count_queue))
+      if (*argrest == 0
+        && (i + 1 >= argc || argv[i+1][0] == '-' || mac_ismsgid(argv[i+1])))
+       {
+       queue_interval = 0;
+       if (i+1 < argc && mac_ismsgid(argv[i+1]))
+         start_queue_run_id = argv[++i];
+       if (i+1 < argc && mac_ismsgid(argv[i+1]))
+         stop_queue_run_id = argv[++i];
+       }
 
     /* -q[f][f][l][G<name>/]<n>: Run the queue at regular intervals, optionally
     forced, optionally local only, optionally named. */
 
-    else if ((queue_interval = readconf_readtime(*argrest ? argrest : argv[++i],
-                                               0, FALSE)) <= 0)
-      exim_fail("exim: bad time value %s: abandoned\n", argv[i]);
+      else if ((queue_interval = readconf_readtime(*argrest ? argrest : argv[++i],
+                                                 0, FALSE)) <= 0)
+       exim_fail("exim: bad time value %s: abandoned\n", argv[i]);
     break;
 
 
index 617c267a37386c735ba1737bfcff2faa8f4fd68d..89ac87f94f02ba710868f157c6be9d4f2ef53598 100644 (file)
@@ -778,11 +778,12 @@ Argument:    points to the tree node
 Returns:     nothing
 */
 
-static void queue_list_extras(tree_node *p)
+static void
+queue_list_extras(tree_node *p)
 {
-if (p->left != NULL) queue_list_extras(p->left);
+if (p->left) queue_list_extras(p->left);
 if (!p->data.val) printf("       +D %s\n", p->name);
-if (p->right != NULL) queue_list_extras(p->right);
+if (p->right) queue_list_extras(p->right);
 }
 
 
index 6f01d9aae371f6a45e644154c200eb6052029eb7..dedc73d2337fd89100ad6ce13b3890b635a45603 100644 (file)
@@ -22,6 +22,13 @@ foo
 QUIT
 ****
 #
+### default q
+exim -bp
+****
+### alternate q
+exim -bp -qGalternate
+****
+#
 exim -qq
 ****
 #
@@ -63,3 +70,6 @@ QUIT
 # 
 sudo mv DIR/spool/alternate/input/* DIR/spool/input/
 exim -q
+****
+#
+no_stderr_check
index 527865b62922446ef684f222458d58ec00ee7ce5..a15ecdd5dd3a2d31a4fa3f7c8da979ec9b0a936c 100644 (file)
@@ -9,6 +9,14 @@
 354 Enter message, ending with "." on a line by itself\r
 250 OK id=10HmaY-0005vi-00\r
 221 the.local.host.name closing connection\r
+### default q
+ 0m   sss 10HmaX-0005vi-00 <CALLER@the.local.host.name>
+          normal@test.ex
+
+### alternate q
+ 0m   sss 10HmaY-0005vi-00 <CALLER@the.local.host.name>
+          alternate@test.ex
+
 220 the.local.host.name ESMTP Exim x.yz Tue, 2 Mar 1999 09:44:33 +0000\r
 250 OK\r
 250 Accepted\r
@@ -21,3 +29,7 @@
 354 Enter message, ending with "." on a line by itself\r
 250 OK id=10HmbA-0005vi-00\r
 221 the.local.host.name closing connection\r
+
+******** SERVER ********
+### default q
+### alternate q