]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
LIST (SUBSCRIBED): Don't assert-crash if list contained a name ending with separator.
authorTimo Sirainen <tss@iki.fi>
Thu, 4 Mar 2010 14:52:11 +0000 (16:52 +0200)
committerTimo Sirainen <tss@iki.fi>
Thu, 4 Mar 2010 14:52:11 +0000 (16:52 +0200)
--HG--
branch : HEAD

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

index dc8fba921a965fe2c0297b38ea0e934aaef0288d..94fb9a941f4564f2b6aeb24167b4cb33c0cf1e5c 100644 (file)
@@ -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,