From 0925ede6bf47dea696153c927418025ad59a903c Mon Sep 17 00:00:00 2001 From: Philip Hazel Date: Mon, 19 Sep 2005 14:01:51 +0000 Subject: [PATCH] Expand uidlists and gidlists (admin_groups, never_users, trusted_users, trusted_groups). --- doc/doc-txt/ChangeLog | 4 +++- doc/doc-txt/NewStuff | 5 ++++- src/ACKNOWLEDGMENTS | 3 ++- src/src/readconf.c | 26 +++++++++++++++++++------- 4 files changed, 28 insertions(+), 10 deletions(-) diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog index c3d1fe70a..1d047283d 100644 --- a/doc/doc-txt/ChangeLog +++ b/doc/doc-txt/ChangeLog @@ -1,4 +1,4 @@ -$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.236 2005/09/19 11:56:11 ph10 Exp $ +$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.237 2005/09/19 14:01:51 ph10 Exp $ Change log file for Exim from version 4.21 ------------------------------------------- @@ -210,6 +210,8 @@ TF/06 The fix for widen_domains has also been applied to qualify_single and PH/49 Michael Haardt's randomized retrying, but as a separate retry parameter type ("H"). +PH/50 Make never_users, trusted_users, admin_groups, trusted_groups expandable. + Exim version 4.52 ----------------- diff --git a/doc/doc-txt/NewStuff b/doc/doc-txt/NewStuff index 4640547ae..87e364df6 100644 --- a/doc/doc-txt/NewStuff +++ b/doc/doc-txt/NewStuff @@ -1,4 +1,4 @@ -$Cambridge: exim/doc/doc-txt/NewStuff,v 1.72 2005/09/19 11:56:11 ph10 Exp $ +$Cambridge: exim/doc/doc-txt/NewStuff,v 1.73 2005/09/19 14:01:51 ph10 Exp $ New Features in Exim -------------------- @@ -165,6 +165,9 @@ PH/13 A new letter, "H", is available in retry parameter sets. It is similar cluster restart at once, and may synchronize their queue processing times. +PH/14 The options never_users, trusted_users, admin_groups, and trusted_groups + are now expanded when the configuration file is read. + Exim version 4.52 ----------------- diff --git a/src/ACKNOWLEDGMENTS b/src/ACKNOWLEDGMENTS index 9b60b6f30..abaa254b3 100644 --- a/src/ACKNOWLEDGMENTS +++ b/src/ACKNOWLEDGMENTS @@ -1,4 +1,4 @@ -$Cambridge: exim/src/ACKNOWLEDGMENTS,v 1.35 2005/09/19 11:56:11 ph10 Exp $ +$Cambridge: exim/src/ACKNOWLEDGMENTS,v 1.36 2005/09/19 14:01:51 ph10 Exp $ EXIM ACKNOWLEDGEMENTS @@ -208,6 +208,7 @@ Alexander Sabourenkov Patch to add saslauthd daemon support Patch for MySQL non-data queries David Saez Suggested patch for $sender_hostname lookup if needed Support for the clamd virus scanner +Jonathan Sambrook Suggested patch for expanding uid and gid lists Peter Savitch Diagnosis of FPE bug when statvfs() fails on spool Harald Schueler Patch for dn_expand() failure on truncated data Heiko Schlichting Diagnosis of intermittent daemon crash bug diff --git a/src/src/readconf.c b/src/src/readconf.c index 3ceece489..2a0b9d120 100644 --- a/src/src/readconf.c +++ b/src/src/readconf.c @@ -1,4 +1,4 @@ -/* $Cambridge: exim/src/src/readconf.c,v 1.13 2005/09/19 11:56:11 ph10 Exp $ */ +/* $Cambridge: exim/src/src/readconf.c,v 1.14 2005/09/19 14:01:51 ph10 Exp $ */ /************************************************* * Exim - an Internet mail transport agent * @@ -1625,10 +1625,16 @@ switch (type) int count = 1; uid_t *list; int ptr = 0; - uschar *p = sptr; + uschar *p; + uschar *op = expand_string (sptr); + + if (op == NULL) + log_write(0, LOG_PANIC_DIE|LOG_CONFIG_IN, "failed to expand %s: %s", + name, expand_string_message); + p = op; if (*p != 0) count++; - while (*p != 0) if (*p++ == ':') count++; + while (*p != 0) if (*p++ == ':' && *p != 0) count++; list = store_malloc(count*sizeof(uid_t)); list[ptr++] = (uid_t)(count - 1); @@ -1637,7 +1643,7 @@ switch (type) else *((uid_t **)((uschar *)data_block + (long int)(ol->value))) = list; - p = sptr; + p = op; while (count-- > 1) { int sep = 0; @@ -1660,10 +1666,16 @@ switch (type) int count = 1; gid_t *list; int ptr = 0; - uschar *p = sptr; + uschar *p; + uschar *op = expand_string (sptr); + + if (op == NULL) + log_write(0, LOG_PANIC_DIE|LOG_CONFIG_IN, "failed to expand %s: %s", + name, expand_string_message); + p = op; if (*p != 0) count++; - while (*p != 0) if (*p++ == ':') count++; + while (*p != 0) if (*p++ == ':' && *p != 0) count++; list = store_malloc(count*sizeof(gid_t)); list[ptr++] = (gid_t)(count - 1); @@ -1672,7 +1684,7 @@ switch (type) else *((gid_t **)((uschar *)data_block + (long int)(ol->value))) = list; - p = sptr; + p = op; while (count-- > 1) { int sep = 0; -- 2.30.2