From: Timo Sirainen Date: Mon, 26 Jun 2017 15:46:30 +0000 (+0300) Subject: lib-storage: mailbox_list_get_permissions() - Use index dir for storage without mails X-Git-Tag: 2.2.32.rc1~136 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6887dab8a00f4d6fc12f1e6dc90527fdd8802308;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: mailbox_list_get_permissions() - Use index dir for storage without mails The index dir might still exist. --- diff --git a/src/lib-storage/mailbox-list.c b/src/lib-storage/mailbox-list.c index cef20fef98..f9077bfc30 100644 --- a/src/lib-storage/mailbox-list.c +++ b/src/lib-storage/mailbox-list.c @@ -955,7 +955,7 @@ mailbox_list_get_permissions_internal(struct mailbox_list *list, const char *name, struct mailbox_permissions *permissions_r) { - const char *path, *parent_name, *p; + const char *path = NULL, *parent_name, *p; i_zero(permissions_r); @@ -967,18 +967,23 @@ mailbox_list_get_permissions_internal(struct mailbox_list *list, permissions_r->file_create_gid = (gid_t)-1; permissions_r->file_create_gid_origin = "defaults"; - if (name != NULL) { + if ((list->flags & MAILBOX_LIST_FLAG_NO_MAIL_FILES) != 0) { + /* mail files don't exist in storage, but index files might. */ + (void)mailbox_list_get_path(list, name, + MAILBOX_LIST_PATH_TYPE_INDEX, &path); + } + + if (name != NULL && path == NULL) { if (mailbox_list_get_path(list, name, MAILBOX_LIST_PATH_TYPE_DIR, &path) < 0) name = NULL; } - if (name == NULL) { + if (name == NULL && path == NULL) { (void)mailbox_list_get_root_path(list, MAILBOX_LIST_PATH_TYPE_DIR, &path); } - if (path == NULL || - (list->flags & MAILBOX_LIST_FLAG_NO_MAIL_FILES) != 0) { + if (path == NULL) { /* no filesystem support in storage */ } else if (mailbox_list_get_permissions_stat(list, path, permissions_r)) { /* got permissions from the given path */