dovecot-2.0: lib-storage: If subscriptions contains an invalid e...
dovecot at dovecot.org
dovecot at dovecot.org
Fri Sep 17 20:38:54 EEST 2010
details: http://hg.dovecot.org/dovecot-2.0/rev/f7bd4059c6af
changeset: 12131:f7bd4059c6af
user: Timo Sirainen <tss at iki.fi>
date: Fri Sep 17 18:38:47 2010 +0100
description:
lib-storage: If subscriptions contains an invalid entry, don't crash with fs layout.
diffstat:
src/lib-storage/list/mailbox-list-fs-iter.c | 21 ++++++++++++++-------
1 files changed, 14 insertions(+), 7 deletions(-)
diffs (31 lines):
diff -r bdf922d26534 -r f7bd4059c6af src/lib-storage/list/mailbox-list-fs-iter.c
--- a/src/lib-storage/list/mailbox-list-fs-iter.c Fri Sep 17 17:54:22 2010 +0100
+++ b/src/lib-storage/list/mailbox-list-fs-iter.c Fri Sep 17 18:38:47 2010 +0100
@@ -680,13 +680,20 @@
if (len > 0 && storage_name[len-1] == ns->real_sep)
storage_name = t_strndup(storage_name, len-1);
- path = mailbox_list_get_path(ns->list, storage_name,
- MAILBOX_LIST_PATH_TYPE_DIR);
- path_split(path, &dir, &fname);
- if (ns->list->v.get_mailbox_flags(ns->list, dir, fname,
- MAILBOX_LIST_FILE_TYPE_UNKNOWN,
- &st, &ctx->info.flags) < 0)
- ctx->ctx.failed = TRUE;
+ if (!mailbox_list_is_valid_pattern(ns->list, storage_name)) {
+ /* broken entry in subscriptions file */
+ ctx->info.flags = MAILBOX_NONEXISTENT;
+ } else {
+ struct mailbox_list *list = ns->list;
+
+ path = mailbox_list_get_path(list, storage_name,
+ MAILBOX_LIST_PATH_TYPE_DIR);
+ path_split(path, &dir, &fname);
+ if (list->v.get_mailbox_flags(list, dir, fname,
+ MAILBOX_LIST_FILE_TYPE_UNKNOWN,
+ &st, &ctx->info.flags) < 0)
+ ctx->ctx.failed = TRUE;
+ }
ctx->info.flags |= flags;
return &ctx->info;
More information about the dovecot-cvs
mailing list