From: Timo Sirainen Date: Wed, 20 Feb 2013 13:56:56 +0000 (+0200) Subject: acl: Skip ACLs if admin user flag is set (especially dsync). X-Git-Tag: 2.2.beta2~13 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0e79d0c9a7ca3ee04f7d10a3be21aed1e1afcf35;p=thirdparty%2Fdovecot%2Fcore.git acl: Skip ACLs if admin user flag is set (especially dsync). --- diff --git a/src/plugins/acl/acl-api.c b/src/plugins/acl/acl-api.c index 062211aa78..1a60b4d4ca 100644 --- a/src/plugins/acl/acl-api.c +++ b/src/plugins/acl/acl-api.c @@ -3,6 +3,8 @@ #include "lib.h" #include "str.h" #include "hash.h" +#include "mail-user.h" +#include "mailbox-list.h" #include "acl-cache.h" #include "acl-api-private.h" @@ -31,6 +33,12 @@ int acl_object_have_right(struct acl_object *aclobj, unsigned int right_idx) struct acl_backend *backend = aclobj->backend; const struct acl_mask *have_mask; + if (mailbox_list_get_user(aclobj->backend->list)->admin) { + /* admin user (especially dsync) can do anything regardless + of ACLs */ + return 1; + } + if (backend->v.object_refresh_cache(aclobj) < 0) return -1;