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)