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