From: Timo Sirainen Date: Tue, 30 May 2017 06:18:14 +0000 (+0300) Subject: lib-storage: Fix ACL in parent mailbox potentially hiding its children. X-Git-Tag: 2.3.0.rc1~1546 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3c56ce9f3960329db46340ce13c6b337849bbdf5;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: Fix ACL in parent mailbox potentially hiding its children. fs_get_existence_info_flag() was only being called with LAYOUT=fs and Maildir combination, so only it was broken if the parent mailbox wasn't visible but its children were. --- diff --git a/src/lib-storage/list/mailbox-list-fs-iter.c b/src/lib-storage/list/mailbox-list-fs-iter.c index ccf97f8026..646fc82c89 100644 --- a/src/lib-storage/list/mailbox-list-fs-iter.c +++ b/src/lib-storage/list/mailbox-list-fs-iter.c @@ -75,8 +75,12 @@ fs_get_existence_info_flag(struct fs_list_iterate_context *ctx, } switch (existence) { case MAILBOX_EXISTENCE_NONE: - *info_flags |= MAILBOX_NONEXISTENT; - break; + /* We already found out that this mailbox exists. So this is + either a race condition or ACL plugin prevented access to + this. In any case treat this as a \NoSelect mailbox so that + we'll recurse into its potential children. This is + especially important if ACL disabled access to the parent + mailbox, but child mailboxes would be accessible. */ case MAILBOX_EXISTENCE_NOSELECT: *info_flags |= MAILBOX_NOSELECT; break;