]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: fs_list_entry() - Do not list MAILBOX_NOINFERIORS for index iterations
authorMarkus Valentin <markus.valentin@open-xchange.com>
Mon, 6 Nov 2023 10:50:11 +0000 (11:50 +0100)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Fri, 24 Nov 2023 21:08:42 +0000 (21:08 +0000)
The index directory is only expected to contain child directories for
mailboxes. Any files in there shouldn't be listed.

src/lib-storage/list/mailbox-list-fs-iter.c

index e5890542e2dabe307fbbdd2f36873a7652717e90..8524d7c4cebb92b20ddd1d36d381193bcf8fac7b 100644 (file)
@@ -749,7 +749,15 @@ fs_list_entry(struct fs_list_iterate_context *ctx,
        if ((ctx->ctx.flags & MAILBOX_LIST_ITER_FORCE_RESYNC) == 0 &&
            mailbox_list_iter_try_delete_noselect(&ctx->ctx, &ctx->info, storage_name))
                return 0;
-       return 1;
+       if ((ctx->info.flags & MAILBOX_NOINFERIORS) != 0 &&
+           ctx->ctx.iter_from_index_dir) {
+              /* Index directory is only expected to contain child directories
+                 for mailboxes. Any files in there shouldn't be listed
+                 (e.g. especially various index files inside mbox format's
+                 .imap/ directory). */
+              return 0;
+       }
+       return 1;
 }
 
 static int