From: Timo Sirainen Date: Wed, 14 Dec 2016 16:13:25 +0000 (+0200) Subject: imapc: Allow using LAYOUT=none without crashing. X-Git-Tag: 2.3.0.rc1~2249 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=64a36868b6e11c91da3d051d581e1a52c6da2f43;p=thirdparty%2Fdovecot%2Fcore.git imapc: Allow using LAYOUT=none without crashing. --- diff --git a/src/lib-storage/index/imapc/imapc-list.c b/src/lib-storage/index/imapc/imapc-list.c index a7d83c6f54..aaa583ffdd 100644 --- a/src/lib-storage/index/imapc/imapc-list.c +++ b/src/lib-storage/index/imapc/imapc-list.c @@ -390,7 +390,7 @@ static struct mailbox_list *imapc_list_get_fs(struct imapc_mailbox_list *list) if (dir == NULL) dir = list->list.set.root_dir; - if (dir == NULL) { + if (dir == NULL || dir[0] == '\0') { /* indexes disabled */ } else if (list->index_list == NULL && !list->index_list_failed) { mailbox_list_settings_init_defaults(&list_set); @@ -937,6 +937,11 @@ int imapc_list_get_mailbox_flags(struct mailbox_list *_list, const char *name, i_assert(list->refreshed_mailboxes_recently); } + if (list->mailboxes == NULL) { + /* imapc list isn't used, but e.g. LAYOUT=none */ + *flags_r = 0; + return 0; + } node = mailbox_tree_lookup(list->mailboxes, vname); if (node == NULL) *flags_r = MAILBOX_NONEXISTENT; diff --git a/src/lib-storage/index/imapc/imapc-storage.c b/src/lib-storage/index/imapc/imapc-storage.c index 6eb5d8616e..67bd5c50b8 100644 --- a/src/lib-storage/index/imapc/imapc-storage.c +++ b/src/lib-storage/index/imapc/imapc-storage.c @@ -424,7 +424,8 @@ static void imapc_storage_get_list_settings(const struct mail_namespace *ns ATTR_UNUSED, struct mailbox_list_settings *set) { - set->layout = MAILBOX_LIST_NAME_IMAPC; + if (set->layout == NULL) + set->layout = MAILBOX_LIST_NAME_IMAPC; set->escape_char = IMAPC_LIST_ESCAPE_CHAR; }