From 94ac3baf4cfe14d7fe34bbf283194379e7e6532c Mon Sep 17 00:00:00 2001 From: "sergey.kitov" Date: Fri, 15 Sep 2023 16:39:36 +0300 Subject: [PATCH] lib-storage: change valid_chroot_dirs to BOOLLIST. --- src/lib-storage/mail-storage-service.c | 6 +++--- src/lib-storage/mail-storage-settings.c | 4 ++-- src/lib-storage/mail-storage-settings.h | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/lib-storage/mail-storage-service.c b/src/lib-storage/mail-storage-service.c index bc6b1b5982..719b691bca 100644 --- a/src/lib-storage/mail-storage-service.c +++ b/src/lib-storage/mail-storage-service.c @@ -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 /./ - check only if there's even a possibility of using them (non-empty valid_chroot_dirs) */ diff --git a/src/lib-storage/mail-storage-settings.c b/src/lib-storage/mail-storage-settings.c index 5500bae503..44f5204224 100644 --- a/src/lib-storage/mail-storage-settings.c +++ b/src/lib-storage/mail-storage-settings.c @@ -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, diff --git a/src/lib-storage/mail-storage-settings.h b/src/lib-storage/mail-storage-settings.h index d4a41628c9..eb230a6da6 100644 --- a/src/lib-storage/mail-storage-settings.h +++ b/src/lib-storage/mail-storage-settings.h @@ -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; -- 2.47.3