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