dovecot-1.2: IMAP ACLs: Let MYRIGHTS show the rights even if we ...

dovecot at dovecot.org dovecot at dovecot.org
Sun Nov 16 14:43:18 EET 2008


details:   http://hg.dovecot.org/dovecot-1.2/rev/5c4af90c9155
changeset: 8426:5c4af90c9155
user:      Timo Sirainen <tss at iki.fi>
date:      Sun Nov 16 14:43:14 2008 +0200
description:
IMAP ACLs: Let MYRIGHTS show the rights even if we don't have "r" permission.

diffstat:

1 file changed, 11 insertions(+), 3 deletions(-)
src/plugins/imap-acl/imap-acl-plugin.c |   14 +++++++++++---

diffs (40 lines):

diff -r 65d005f2c28b -r 5c4af90c9155 src/plugins/imap-acl/imap-acl-plugin.c
--- a/src/plugins/imap-acl/imap-acl-plugin.c	Sun Nov 16 14:40:56 2008 +0200
+++ b/src/plugins/imap-acl/imap-acl-plugin.c	Sun Nov 16 14:43:14 2008 +0200
@@ -74,10 +74,10 @@ acl_mailbox_open_as_admin(struct client_
 	/* not an administrator. */
 	if (acl_mailbox_right_lookup(box, ACL_STORAGE_RIGHT_LOOKUP) <= 0) {
 		client_send_tagline(cmd, t_strdup_printf(
-			"["IMAP_RESP_CODE_NONEXISTENT"] "
+			"NO ["IMAP_RESP_CODE_NONEXISTENT"] "
 			MAIL_ERRSTR_MAILBOX_NOT_FOUND, name));
 	} else {
-		client_send_tagline(cmd, ERROR_NOT_ADMIN);
+		client_send_tagline(cmd, "NO "ERROR_NOT_ADMIN);
 	}
 	mailbox_close(&box);
 	return NULL;
@@ -231,7 +231,8 @@ static bool cmd_myrights(struct client_c
 	if (storage == NULL)
 		return TRUE;
 
-	box = mailbox_open(storage, real_mailbox, NULL, ACL_MAILBOX_OPEN_FLAGS);
+	box = mailbox_open(storage, real_mailbox, NULL, ACL_MAILBOX_OPEN_FLAGS |
+			   MAIL_STORAGE_FLAG_IGNORE_ACLS);
 	if (box == NULL) {
 		client_send_storage_error(cmd, storage);
 		return TRUE;
@@ -240,6 +241,13 @@ static bool cmd_myrights(struct client_c
 	if (acl_object_get_my_rights(acl_mailbox_get_aclobj(box),
 				     pool_datastack_create(), &rights) < 0) {
 		client_send_tagline(cmd, "NO "MAIL_ERRSTR_CRITICAL_MSG);
+		mailbox_close(&box);
+		return TRUE;
+	}
+	if (*rights == NULL) {
+		client_send_tagline(cmd, t_strdup_printf(
+			"NO ["IMAP_RESP_CODE_NONEXISTENT"] "
+			MAIL_ERRSTR_MAILBOX_NOT_FOUND, real_mailbox));
 		mailbox_close(&box);
 		return TRUE;
 	}


More information about the dovecot-cvs mailing list