]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: change valid_chroot_dirs to BOOLLIST.
authorsergey.kitov <sergey.kitov@open-xchange.com>
Fri, 15 Sep 2023 13:39:36 +0000 (16:39 +0300)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Wed, 12 Feb 2025 10:34:13 +0000 (12:34 +0200)
src/lib-storage/mail-storage-service.c
src/lib-storage/mail-storage-settings.c
src/lib-storage/mail-storage-settings.h

index bc6b1b5982fc37e50bb4fae4a1774af57138259b..719b691bcaf672ad30979f7c33b3bbe455768246 100644 (file)
@@ -116,10 +116,10 @@ static bool validate_chroot(const struct mail_user_settings *user_set,
        if (*dir == '\0')
                return FALSE;
 
-       if (*user_set->valid_chroot_dirs == '\0')
+       if (array_is_empty(&user_set->valid_chroot_dirs))
                return FALSE;
 
-       chroot_dirs = t_strsplit(user_set->valid_chroot_dirs, ":");
+       chroot_dirs = settings_boollist_get(&user_set->valid_chroot_dirs);
        while (*chroot_dirs != NULL) {
                if (**chroot_dirs != '\0' &&
                    str_begins_with(dir, *chroot_dirs))
@@ -157,7 +157,7 @@ user_reply_handle(struct mail_storage_service_user *user,
        }
 
        if (home != NULL && chroot == NULL &&
-           *user->user_set->valid_chroot_dirs != '\0' &&
+           array_not_empty(&user->user_set->valid_chroot_dirs) &&
            (p = strstr(home, "/./")) != NULL) {
                /* wu-ftpd like <chroot>/./<home> - check only if there's even
                   a possibility of using them (non-empty valid_chroot_dirs) */
index 5500bae5033992bc6fb86fbe2fc11e4f07713c79..44f5204224ddfa08e4d15f0de99e918c34f5441d 100644 (file)
@@ -322,7 +322,7 @@ static const struct setting_define mail_user_setting_defines[] = {
        DEF(STR, mail_chroot),
        DEF(BOOLLIST, mail_access_groups),
        DEF(STR, mail_privileged_group),
-       DEF(STR, valid_chroot_dirs),
+       DEF(BOOLLIST, valid_chroot_dirs),
 
        DEF(UINT, first_valid_uid),
        DEF(UINT, last_valid_uid),
@@ -352,7 +352,7 @@ static const struct mail_user_settings mail_user_default_settings = {
        .mail_chroot = "",
        .mail_access_groups = ARRAY_INIT,
        .mail_privileged_group = "",
-       .valid_chroot_dirs = "",
+       .valid_chroot_dirs = ARRAY_INIT,
 
        .first_valid_uid = 500,
        .last_valid_uid = 0,
index d4a41628c9e9cc45ed69e81e2059c0a74cae092d..eb230a6da64eb75cfddef8f2bc36afc2446b3b09 100644 (file)
@@ -161,7 +161,7 @@ struct mail_user_settings {
        const char *mail_chroot;
        ARRAY_TYPE(const_string) mail_access_groups;
        const char *mail_privileged_group;
-       const char *valid_chroot_dirs;
+       ARRAY_TYPE(const_string) valid_chroot_dirs;
 
        unsigned int first_valid_uid, last_valid_uid;
        unsigned int first_valid_gid, last_valid_gid;