summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Harris <jgh146exb@wizmail.org>2019-05-10 15:18:56 +0100
committerJeremy Harris <jgh146exb@wizmail.org>2019-05-10 15:33:49 +0100
commite5903596a0f6b078f5854ca591963e21c7f7328a (patch)
tree2a17fa1dc8bc989912a49b5aac432d2344580f39
parent345f272404cb1c454b7602214c76fd0ebf04d66e (diff)
Fix listing a named queue by a non-admin user. Bug 2398
-rw-r--r--doc/doc-txt/ChangeLog4
-rw-r--r--src/src/exim.c25
-rw-r--r--src/src/queue.c7
-rw-r--r--test/scripts/0000-Basic/057610
-rw-r--r--test/stdout/057612
5 files changed, 43 insertions, 15 deletions
diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog
index 05f2545bc..a204b3784 100644
--- a/doc/doc-txt/ChangeLog
+++ b/doc/doc-txt/ChangeLog
@@ -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
-----------------
diff --git a/src/src/exim.c b/src/src/exim.c
index 1952d91a4..1aa32b269 100644
--- a/src/src/exim.c
+++ b/src/src/exim.c
@@ -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;
diff --git a/src/src/queue.c b/src/src/queue.c
index 617c267a3..89ac87f94 100644
--- a/src/src/queue.c
+++ b/src/src/queue.c
@@ -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);
}
diff --git a/test/scripts/0000-Basic/0576 b/test/scripts/0000-Basic/0576
index 6f01d9aae..dedc73d23 100644
--- a/test/scripts/0000-Basic/0576
+++ b/test/scripts/0000-Basic/0576
@@ -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
diff --git a/test/stdout/0576 b/test/stdout/0576
index 527865b62..a15ecdd5d 100644
--- a/test/stdout/0576
+++ b/test/stdout/0576
@@ -9,6 +9,14 @@
354 Enter message, ending with "." on a line by itself
250 OK id=10HmaY-0005vi-00
221 the.local.host.name closing connection
+### 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
250 OK
250 Accepted
@@ -21,3 +29,7 @@
354 Enter message, ending with "." on a line by itself
250 OK id=10HmbA-0005vi-00
221 the.local.host.name closing connection
+
+******** SERVER ********
+### default q
+### alternate q