dovecot-1.2: imap-acl: Don't return default rights for mailboxes...
dovecot at dovecot.org
dovecot at dovecot.org
Fri Feb 20 23:31:41 EET 2009
details: http://hg.dovecot.org/dovecot-1.2/rev/0ac80bed5d3e
changeset: 8757:0ac80bed5d3e
user: Timo Sirainen <tss at iki.fi>
date: Fri Feb 20 16:31:37 2009 -0500
description:
imap-acl: Don't return default rights for mailboxes in non-private namespaces.
diffstat:
1 file changed, 12 insertions(+), 5 deletions(-)
src/plugins/imap-acl/imap-acl-plugin.c | 17 ++++++++++++-----
diffs (56 lines):
diff -r be1d1c722c92 -r 0ac80bed5d3e src/plugins/imap-acl/imap-acl-plugin.c
--- a/src/plugins/imap-acl/imap-acl-plugin.c Fri Feb 20 16:26:41 2009 -0500
+++ b/src/plugins/imap-acl/imap-acl-plugin.c Fri Feb 20 16:31:37 2009 -0500
@@ -164,7 +164,8 @@ imap_acl_write_right(string_t *dest, str
static int
imap_acl_write_aclobj(string_t *dest, struct acl_backend *backend,
- struct acl_object *aclobj, bool convert_owner)
+ struct acl_object *aclobj, bool convert_owner,
+ bool add_default)
{
struct acl_object_list_iter *iter;
struct acl_rights rights;
@@ -200,7 +201,8 @@ imap_acl_write_aclobj(string_t *dest, st
can't do the conversion, so try again. */
str_truncate(dest, orig_len);
return imap_acl_write_aclobj(dest, backend,
- aclobj, FALSE);
+ aclobj, FALSE,
+ add_default);
}
seen_owner = TRUE;
if (rights.rights != NULL)
@@ -218,7 +220,7 @@ imap_acl_write_aclobj(string_t *dest, st
}
acl_object_list_deinit(&iter);
- if (!seen_positive_owner && username != NULL) {
+ if (!seen_positive_owner && username != NULL && add_default) {
/* no positive owner rights returned, write default ACLs */
memset(&rights, 0, sizeof(rights));
if (!convert_owner) {
@@ -239,6 +241,8 @@ static bool cmd_getacl(struct client_com
static bool cmd_getacl(struct client_command_context *cmd)
{
struct acl_backend *backend;
+ struct mail_namespace *ns;
+ struct mail_storage *storage;
struct mailbox *box;
const char *mailbox;
string_t *str;
@@ -259,9 +263,12 @@ static bool cmd_getacl(struct client_com
imap_quote_append_string(str, mailbox, FALSE);
len = str_len(str);
- backend = acl_storage_get_backend(mailbox_get_storage(box));
+ storage = mailbox_get_storage(box);
+ backend = acl_storage_get_backend(storage);
+ ns = mail_storage_get_namespace(storage);
ret = imap_acl_write_aclobj(str, backend,
- acl_mailbox_get_aclobj(box), TRUE);
+ acl_mailbox_get_aclobj(box), TRUE,
+ ns->type == NAMESPACE_PRIVATE);
if (ret == 0) {
client_send_line(cmd->client, str_c(str));
client_send_tagline(cmd, "OK Getacl completed.");
More information about the dovecot-cvs
mailing list