# HG changeset patch # User Timo Sirainen # Date 1192988195 -10800 # Node ID 1478fc5cf632ea177fe1df7a2586f5f0900fc3a5 # Parent afc28dd2d4c5ea20cc29bcdc29462704975fb3e4 Don't crash when listing mailboxes in a namespace with a prefix. diff -r afc28dd2d4c5 -r 1478fc5cf632 src/plugins/acl/acl-mailbox-list.c --- 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)