Mercurial > dovecot > original-hg > dovecot-1.2
changeset 6604:1478fc5cf632 HEAD
Don't crash when listing mailboxes in a namespace with a prefix.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sun, 21 Oct 2007 20:36:35 +0300 |
parents | afc28dd2d4c5 |
children | d81a50101724 |
files | src/plugins/acl/acl-mailbox-list.c |
diffstat | 1 files changed, 12 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/plugins/acl/acl-mailbox-list.c Sun Oct 21 19:59:09 2007 +0300 +++ b/src/plugins/acl/acl-mailbox-list.c Sun Oct 21 20:36:35 2007 +0300 @@ -161,8 +161,13 @@ struct acl_mailbox_list *alist = ACL_LIST_CONTEXT(_ctx->list); const struct mailbox_info *info; struct mailbox_node *node; + const char *ns_prefix, *acl_name; + unsigned int ns_prefix_len; int ret; + ns_prefix = _ctx->list->ns->prefix; + ns_prefix_len = strlen(ns_prefix); + for (;;) { if (ctx->tree_iter != NULL) { node = mailbox_tree_iterate_next(ctx->tree_iter, @@ -183,7 +188,13 @@ return info; } - ret = acl_mailbox_list_have_right(alist, info->name, + /* Mailbox names contain namespace prefix, except when listing + INBOX. */ + acl_name = info->name; + if (strncmp(acl_name, ns_prefix, ns_prefix_len) == 0) + acl_name += ns_prefix_len; + + ret = acl_mailbox_list_have_right(alist, acl_name, ACL_STORAGE_RIGHT_LOOKUP, NULL); if (ret > 0)