From b13e141c8d4cde7347fac4fc761b0957ce5357f8 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Thu, 4 Mar 2010 16:52:11 +0200 Subject: [PATCH] LIST (SUBSCRIBED): Don't assert-crash if list contained a name ending with separator. --HG-- branch : HEAD --- src/lib-storage/list/mailbox-list-fs-iter.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/lib-storage/list/mailbox-list-fs-iter.c b/src/lib-storage/list/mailbox-list-fs-iter.c index dc8fba921a..94fb9a941f 100644 --- a/src/lib-storage/list/mailbox-list-fs-iter.c +++ b/src/lib-storage/list/mailbox-list-fs-iter.c @@ -618,7 +618,8 @@ fs_list_subs(struct fs_list_iterate_context *ctx) { struct mailbox_node *node; enum mailbox_info_flags flags; - const char *path, *dir, *fname; + const char *path, *dir, *fname, *name; + unsigned int len; struct stat st; node = mailbox_tree_iterate_next(ctx->tree_iter, &ctx->info.name); @@ -634,7 +635,13 @@ fs_list_subs(struct fs_list_iterate_context *ctx) return &ctx->info; } - path = mailbox_list_get_path(ctx->ctx.list, ctx->info.name, + /* if name ends with hierarchy separator, drop the separator */ + name = ctx->info.name; + len = strlen(name); + if (len > 0 && name[len-1] == ctx->info.ns->real_sep) + name = t_strndup(name, len-1); + + path = mailbox_list_get_path(ctx->ctx.list, name, MAILBOX_LIST_PATH_TYPE_DIR); path_split(path, &dir, &fname); if (ctx->ctx.list->v.get_mailbox_flags(ctx->ctx.list, dir, fname, -- 2.47.3