]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
Change extra_groups to BOOLLIST.
authorsergey.kitov <sergey.kitov@open-xchange.com>
Fri, 20 Oct 2023 07:31:53 +0000 (10:31 +0300)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Wed, 12 Feb 2025 10:34:13 +0000 (12:34 +0200)
25 files changed:
src/anvil/anvil-settings.c
src/auth/auth-settings.c
src/config/config-settings.c
src/dict/dict-settings.c
src/dns/dns-client-settings.c
src/doveadm/doveadm-settings.c
src/imap-hibernate/imap-hibernate-settings.c
src/imap-login/imap-login-settings.c
src/imap-urlauth-login/imap-urlauth-login-settings.c
src/imap-urlauth/imap-urlauth-settings.c
src/imap-urlauth/imap-urlauth-worker-settings.c
src/imap/imap-settings.c
src/indexer/indexer-settings.c
src/indexer/indexer-worker-settings.c
src/lib-master/service-settings.h
src/lmtp/lmtp-settings.c
src/log/log-settings.c
src/master/master-settings.c
src/master/service.c
src/pop3-login/pop3-login-settings.c
src/pop3/pop3-settings.c
src/stats/stats-settings.c
src/submission-login/submission-login-settings.c
src/submission/submission-settings.c
src/util/health-check-settings.c

index f756c703bd0482a3007a6368de4c10c109d859f3..c945c92062f2d11fec559967a37d186816760838 100644 (file)
@@ -13,7 +13,7 @@ struct service_settings anvil_service_settings = {
        .user = "",
        .group = "",
        .privileged_group = "",
-       .extra_groups = "",
+       .extra_groups = ARRAY_INIT,
        .chroot = "",
 
        .drop_priv_before_exec = FALSE,
index 1c4fab0da71b72565cd1e0d6b611c02107d8b38c..92db96689b7ce732a2eff3711c75153fefb0c6ff 100644 (file)
@@ -21,7 +21,7 @@ struct service_settings auth_service_settings = {
        .user = "$SET:default_internal_user",
        .group = "",
        .privileged_group = "",
-       .extra_groups = "",
+       .extra_groups = ARRAY_INIT,
        .chroot = "",
 
        .drop_priv_before_exec = FALSE,
@@ -76,7 +76,7 @@ struct service_settings auth_worker_service_settings = {
        .user = "",
        .group = "",
        .privileged_group = "",
-       .extra_groups = "",
+       .extra_groups = ARRAY_INIT,
        .chroot = "",
 
        .drop_priv_before_exec = FALSE,
index 5eb3a3e3f4d2b809a2eb5cea2d156c048efde8ce..caa7cb958ddf1129f28ee5b4330f2a56c0a26dbe 100644 (file)
@@ -13,7 +13,7 @@ struct service_settings config_service_settings = {
        .user = "",
        .group = "",
        .privileged_group = "",
-       .extra_groups = "",
+       .extra_groups = ARRAY_INIT,
        .chroot = "",
 
        .drop_priv_before_exec = FALSE,
index 8027f711a2d1ea101e92f5026ced533d7d021792..c91f0ba925361b6a8c3474501c65ae450c2b38ec 100644 (file)
@@ -14,7 +14,7 @@ struct service_settings dict_service_settings = {
        .user = "$SET:default_internal_user",
        .group = "",
        .privileged_group = "",
-       .extra_groups = "",
+       .extra_groups = ARRAY_INIT,
        .chroot = "",
 
        .drop_priv_before_exec = FALSE,
@@ -44,7 +44,7 @@ struct service_settings dict_async_service_settings = {
        .user = "$SET:default_internal_user",
        .group = "",
        .privileged_group = "",
-       .extra_groups = "",
+       .extra_groups = ARRAY_INIT,
        .chroot = "",
 
        .drop_priv_before_exec = FALSE,
@@ -72,7 +72,7 @@ struct service_settings dict_expire_service_settings = {
        .user = "$SET:default_internal_user",
        .group = "",
        .privileged_group = "",
-       .extra_groups = "",
+       .extra_groups = ARRAY_INIT,
        .chroot = "",
 
        .drop_priv_before_exec = FALSE,
index 9b04eb7f6d6e02d4dcf836d854973d9f3110fd85..c319e7322a6ac141ac5c041dc69a7d83f71819d2 100644 (file)
@@ -13,7 +13,7 @@ struct service_settings dns_client_service_settings = {
        .user = "$SET:default_internal_user",
        .group = "",
        .privileged_group = "",
-       .extra_groups = "",
+       .extra_groups = ARRAY_INIT,
        .chroot = "",
 
        .drop_priv_before_exec = FALSE,
index 3378a87036d2cd427ab5e578e19ac491a5df3dda..8ee4ebb6c1c8e0e69d5ecfabab8a705694216ff1 100644 (file)
@@ -25,7 +25,6 @@ struct service_settings doveadm_service_settings = {
        .user = "",
        .group = "",
        .privileged_group = "",
-       .extra_groups = "$SET:default_internal_group",
        .chroot = "",
 
        .drop_priv_before_exec = FALSE,
@@ -45,6 +44,8 @@ const struct setting_keyvalue doveadm_service_settings_defaults[] = {
        { "unix_listener/doveadm-server/type", "tcp" },
        { "unix_listener/doveadm-server/mode", "0600" },
 
+       { "service_extra_groups", "$SET:default_internal_group" },
+
        { NULL, NULL }
 };
 
index f8e91ec47d2b9591c335f5bf9311a1cfe7031c62..9d049f9771d7bcc544ef2423e4698374a90d3d68 100644 (file)
@@ -15,7 +15,7 @@ struct service_settings imap_hibernate_service_settings = {
        .user = "$SET:default_internal_user",
        .group = "",
        .privileged_group = "",
-       .extra_groups = "",
+       .extra_groups = ARRAY_INIT,
        .chroot = "",
 
        .drop_priv_before_exec = FALSE,
index 922a23ffea75f9ca8b28dd28d1217c318c06d3d3..c26dc26198c963abc5eb2fb0c3ea20e921dbfc13 100644 (file)
@@ -15,7 +15,7 @@ struct service_settings imap_login_service_settings = {
        .user = "$SET:default_login_user",
        .group = "",
        .privileged_group = "",
-       .extra_groups = "",
+       .extra_groups = ARRAY_INIT,
        .chroot = "login",
 
        .drop_priv_before_exec = FALSE,
index a03c504794fab80c8c1fdebe830646e9565c90a9..8cdff04cd9c1ab24b6450e964754bf92eb65e76d 100644 (file)
@@ -14,7 +14,7 @@ struct service_settings imap_urlauth_login_service_settings = {
        .user = "$SET:default_login_user",
        .group = "",
        .privileged_group = "",
-       .extra_groups = "",
+       .extra_groups = ARRAY_INIT,
        .chroot = "token-login",
 
        .drop_priv_before_exec = FALSE,
index 495578068782fa68a4fc44ec9da1c781633f06a5..922d07ed788418c163fae76f4ba68113d630feaf 100644 (file)
@@ -16,7 +16,7 @@ struct service_settings imap_urlauth_service_settings = {
        .user = "$SET:default_internal_user",
        .group = "",
        .privileged_group = "",
-       .extra_groups = "",
+       .extra_groups = ARRAY_INIT,
        .chroot = "",
 
        .drop_priv_before_exec = FALSE,
index e79ade02561d66f72d4b66cfb4de959690ff5cff..f5fb704c66be2b0aef3348b77fdb8ae66ae80dfd 100644 (file)
@@ -18,7 +18,6 @@ struct service_settings imap_urlauth_worker_service_settings = {
        .user = "",
        .group = "",
        .privileged_group = "",
-       .extra_groups = "$SET:default_internal_group",
        .chroot = "",
 
        .drop_priv_before_exec = FALSE,
@@ -39,6 +38,8 @@ const struct setting_keyvalue imap_urlauth_worker_service_settings_defaults[] =
        { "unix_listener/"IMAP_URLAUTH_WORKER_SOCKET"/mode", "0600" },
        { "unix_listener/"IMAP_URLAUTH_WORKER_SOCKET"/user", "$SET:default_internal_user" },
 
+       { "service_extra_groups", "$SET:default_internal_group" },
+
        { NULL, NULL }
 };
 
index 67b3b22490c57885783f2613cbba43057b7db313..00bd84c30ad2bc0419210cf38704f55274123702 100644 (file)
@@ -18,7 +18,6 @@ struct service_settings imap_service_settings = {
        .user = "",
        .group = "",
        .privileged_group = "",
-       .extra_groups = "$SET:default_internal_group",
        .chroot = "",
 
        .drop_priv_before_exec = FALSE,
@@ -47,6 +46,8 @@ const struct setting_keyvalue imap_service_settings_defaults[] = {
        { "unix_listener/srv.imap\\s%{pid}/type", "admin" },
        { "unix_listener/srv.imap\\s%{pid}/mode", "0600" },
 
+       { "service_extra_groups", "$SET:default_internal_group" },
+
        { NULL, NULL }
 };
 
index 026279ea5129a46680770e9c516903564e138cb9..9787e735c1f246e50da2b7be91e41fb311479305 100644 (file)
@@ -13,7 +13,7 @@ struct service_settings indexer_service_settings = {
        .user = "$SET:default_internal_user",
        .group = "",
        .privileged_group = "",
-       .extra_groups = "",
+       .extra_groups = ARRAY_INIT,
        .chroot = "",
 
        .drop_priv_before_exec = FALSE,
index 2e0cd085fc27d640288709d31e903eadd21aff87..c78b083ca77c6a8b2b74c12c768ea92ee0839fa3 100644 (file)
@@ -13,7 +13,6 @@ struct service_settings indexer_worker_service_settings = {
        .user = "",
        .group = "",
        .privileged_group = "",
-       .extra_groups = "$SET:default_internal_group",
        .chroot = "",
 
        .drop_priv_before_exec = FALSE,
@@ -37,5 +36,7 @@ const struct setting_keyvalue indexer_worker_service_settings_defaults[] = {
        { "unix_listener/srv.indexer-worker\\s%{pid}/type", "admin" },
        { "unix_listener/srv.indexer-worker\\s%{pid}/mode", "0600" },
 
+       { "service_extra_groups", "$SET:default_internal_group" },
+
        { NULL, NULL }
 };
index 3570ca99fc3ffa2dbab26d55659a5d22e757ee9a..266b6a06f1010be35b376ec80c9cc7802f3f152a 100644 (file)
@@ -62,7 +62,7 @@ struct service_settings {
        const char *user;
        const char *group;
        const char *privileged_group;
-       const char *extra_groups;
+       ARRAY_TYPE(const_string) extra_groups;
        const char *chroot;
 
        bool drop_priv_before_exec;
index 4ee5b25abf9108d1179c40417d86c0caab075b40..b3754a78535260cb420508779ef20c217ee8cc51 100644 (file)
@@ -23,7 +23,6 @@ struct service_settings lmtp_service_settings = {
        .user = "",
        .group = "",
        .privileged_group = "",
-       .extra_groups = "$SET:default_internal_group",
        .chroot = "",
 
        .drop_priv_before_exec = FALSE,
@@ -41,6 +40,8 @@ const struct setting_keyvalue lmtp_service_settings_defaults[] = {
        { "unix_listener/lmtp/path", "lmtp" },
        { "unix_listener/lmtp/mode", "0666" },
 
+       { "service_extra_groups", "$SET:default_internal_group" },
+
        { NULL, NULL }
 };
 
index 7ea114067f106477f348029d2d50907c3cd1a78c..58e2b074a25eb01c1e536283f45e17c619ff4935 100644 (file)
@@ -13,7 +13,7 @@ struct service_settings log_service_settings = {
        .user = "",
        .group = "",
        .privileged_group = "",
-       .extra_groups = "",
+       .extra_groups = ARRAY_INIT,
        .chroot = "",
 
        .drop_priv_before_exec = FALSE,
index feb4db1aa7144c6638098b28629971ce9b90189f..c9907d5e3ffc9b2d3acb67a40066ef9ae1716cc4 100644 (file)
@@ -121,7 +121,7 @@ static const struct setting_define service_setting_defines[] = {
        DEF(STR, user),
        DEF(STR, group),
        DEF(STR, privileged_group),
-       DEF(STR, extra_groups),
+       DEF(BOOLLIST, extra_groups),
        DEF(STR, chroot),
 
        DEF(BOOL, drop_priv_before_exec),
@@ -154,7 +154,7 @@ static const struct service_settings service_default_settings = {
        .user = "",
        .group = "",
        .privileged_group = "",
-       .extra_groups = "",
+       .extra_groups = ARRAY_INIT,
        .chroot = "",
 
        .drop_priv_before_exec = FALSE,
@@ -277,6 +277,16 @@ expand_group(const char **group, const struct master_settings *set)
                *group = set->default_internal_group;
 }
 
+static void
+expand_groups(ARRAY_TYPE(const_string) *groups, const struct master_settings *set)
+{
+       const char **group;
+       if (array_is_empty(groups))
+               return;
+       array_foreach_modifiable(groups, group)
+               expand_group(group, set);
+}
+
 static bool
 fix_file_listener_paths(ARRAY_TYPE(file_listener_settings) *l,
                        pool_t pool, const struct master_settings *master_set,
@@ -651,7 +661,7 @@ master_settings_ext_check(struct event *event, void *_set,
                        }
                }
                expand_user(&service->user, &service->user_default, set);
-               expand_group(&service->extra_groups, set);
+               expand_groups(&service->extra_groups, set);
                service_set_login_dump_core(service);
        }
 
index 99356a8ad2a299039a67e4164657f544e8ff02f6..0f1ebf51c3a8aabdc9cfe55ab1bc45e7457c1c30 100644 (file)
@@ -165,7 +165,7 @@ service_create_inet_listeners(struct service *service,
        return 0;
 }
 
-static int service_get_groups(const char *groups, pool_t pool,
+static int service_get_groups(const ARRAY_TYPE(const_string) *groups, pool_t pool,
                              const char **gids_r, const char **error_r)
 {
        const char *const *tmp;
@@ -173,7 +173,7 @@ static int service_get_groups(const char *groups, pool_t pool,
        gid_t gid;
 
        str = t_str_new(64);
-       for (tmp = t_strsplit(groups, ","); *tmp != NULL; tmp++) {
+       for (tmp = settings_boollist_get(groups); *tmp != NULL; tmp++) {
                if (get_gid(*tmp, &gid, error_r) < 0)
                        return -1;
 
@@ -248,8 +248,8 @@ service_create_real(pool_t pool, struct event *event,
                return NULL;
        }
 
-       if (*set->extra_groups != '\0') {
-               if (service_get_groups(set->extra_groups, pool,
+       if (array_not_empty(&set->extra_groups)) {
+               if (service_get_groups(&set->extra_groups, pool,
                                       &service->extra_gids, error_r) < 0) {
                        *error_r = t_strdup_printf(
                                "%s (See service %s { extra_groups } setting)",
index 3374b45a685de6642139429547de67045f06d5cc..8ecf742d60d0350b3f8ea3a68e05f115be14ecb0 100644 (file)
@@ -15,7 +15,7 @@ struct service_settings pop3_login_service_settings = {
        .user = "$SET:default_login_user",
        .group = "",
        .privileged_group = "",
-       .extra_groups = "",
+       .extra_groups = ARRAY_INIT,
        .chroot = "login",
 
        .drop_priv_before_exec = FALSE,
index 769a756281ad1dd5ac8496ebaebc090c94ccdc78..8cf867ea2dae9656baa83f55d9a81af45cb5ed86 100644 (file)
@@ -20,7 +20,6 @@ struct service_settings pop3_service_settings = {
        .user = "",
        .group = "",
        .privileged_group = "",
-       .extra_groups = "$SET:default_internal_group",
        .chroot = "",
 
        .drop_priv_before_exec = FALSE,
@@ -44,6 +43,8 @@ const struct setting_keyvalue pop3_service_settings_defaults[] = {
        { "unix_listener/srv.pop3\\s%{pid}/type", "admin" },
        { "unix_listener/srv.pop3\\s%{pid}/mode", "0600" },
 
+       { "service_extra_groups", "$SET:default_internal_group" },
+
        { NULL, NULL }
 };
 
index 1847088f029226e6e592f7c3cfb6e8f2c9f150a5..59f9b2872bbe42109e376a1adb9072ea2ddb2b8d 100644 (file)
@@ -26,7 +26,7 @@ struct service_settings stats_service_settings = {
        .user = "$SET:default_internal_user",
        .group = "",
        .privileged_group = "",
-       .extra_groups = "",
+       .extra_groups = ARRAY_INIT,
        .chroot = "",
 
        .drop_priv_before_exec = FALSE,
index 8dddb317798abde341ba8c186289d529cc37b86b..d82fd70b124a52e7b855f87710161ce9ca404947 100644 (file)
@@ -19,7 +19,7 @@ struct service_settings submission_login_service_settings = {
        .user = "$SET:default_login_user",
        .group = "",
        .privileged_group = "",
-       .extra_groups = "",
+       .extra_groups = ARRAY_INIT,
        .chroot = "login",
 
        .drop_priv_before_exec = FALSE,
index b20872eb8b89043aab8b16b64dc96ff154ab2295..58077c19cbe3dfbea42e17bd4a9fcd642cb1a2ef 100644 (file)
@@ -21,7 +21,6 @@ struct service_settings submission_service_settings = {
        .user = "",
        .group = "",
        .privileged_group = "",
-       .extra_groups = "$SET:default_internal_group",
        .chroot = "",
 
        .drop_priv_before_exec = FALSE,
@@ -45,6 +44,8 @@ const struct setting_keyvalue submission_service_settings_defaults[] = {
        { "unix_listener/srv.submission\\s%{pid}/type", "admin" },
        { "unix_listener/srv.submission\\s%{pid}/mode", "0600" },
 
+       { "service_extra_groups", "$SET:default_internal_group" },
+
        { NULL, NULL }
 };
 
index d7e6dd58af05340b1a8866c3ad481414ff90b8d0..fc18d3ee6c4f6d2ddd71c6630153c6fb39716805 100644 (file)
@@ -13,7 +13,7 @@ struct service_settings health_check_service_settings = {
        .user = "$SET:default_internal_user",
        .group = "",
        .privileged_group = "",
-       .extra_groups = "",
+       .extra_groups = ARRAY_INIT,
        .chroot = "",
 
        .drop_priv_before_exec = TRUE,