dovecot-2.2: acl: Don't add sameuser -> sameuser entries to ACL ...
dovecot at dovecot.org
dovecot at dovecot.org
Wed Sep 26 18:01:29 EEST 2012
details: http://hg.dovecot.org/dovecot-2.2/rev/3eaeacc85b4c
changeset: 15125:3eaeacc85b4c
user: Timo Sirainen <tss at iki.fi>
date: Tue Sep 11 17:13:51 2012 +0300
description:
acl: Don't add sameuser -> sameuser entries to ACL dict.
diffstat:
src/plugins/acl/acl-lookup-dict.c | 12 +++++++++++-
1 files changed, 11 insertions(+), 1 deletions(-)
diffs (29 lines):
diff -r cb3f49b649bf -r 3eaeacc85b4c src/plugins/acl/acl-lookup-dict.c
--- a/src/plugins/acl/acl-lookup-dict.c Thu Sep 06 16:50:00 2012 +0300
+++ b/src/plugins/acl/acl-lookup-dict.c Tue Sep 11 17:13:51 2012 +0300
@@ -92,6 +92,13 @@
}
}
+static bool
+acl_rights_is_same_user(const struct acl_rights *right, struct mail_user *user)
+{
+ return right->id_type == ACL_ID_USER &&
+ strcmp(right->identifier, user->username) == 0;
+}
+
static int acl_lookup_dict_rebuild_add_backend(struct mail_namespace *ns,
ARRAY_TYPE(const_string) *ids)
{
@@ -115,7 +122,10 @@
iter = acl_object_list_init(aclobj);
while ((ret = acl_object_list_next(iter, &rights)) > 0) {
- if (acl_rights_has_nonowner_lookup_changes(&rights)) {
+ /* avoid pointless user -> user entries,
+ which some clients do */
+ if (acl_rights_has_nonowner_lookup_changes(&rights) &&
+ !acl_rights_is_same_user(&rights, ns->owner)) {
str_truncate(id, 0);
acl_lookup_dict_write_rights_id(id, &rights);
str_append_c(id, '/');
More information about the dovecot-cvs
mailing list