From: Timo Sirainen Date: Tue, 11 Sep 2012 14:13:51 +0000 (+0300) Subject: acl: Don't add sameuser -> sameuser entries to ACL dict. X-Git-Tag: 2.1.10~20 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ee2f574898ccaee14eabc80213295c5d93d126c2;p=thirdparty%2Fdovecot%2Fcore.git acl: Don't add sameuser -> sameuser entries to ACL dict. --- diff --git a/src/plugins/acl/acl-lookup-dict.c b/src/plugins/acl/acl-lookup-dict.c index e030074c85..b417d11e8b 100644 --- a/src/plugins/acl/acl-lookup-dict.c +++ b/src/plugins/acl/acl-lookup-dict.c @@ -92,6 +92,13 @@ acl_lookup_dict_write_rights_id(string_t *dest, const struct acl_rights *right) } } +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 @@ static int acl_lookup_dict_rebuild_add_backend(struct mail_namespace *ns, 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, '/');