]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
acl: Skip ACLs if admin user flag is set (especially dsync).
authorTimo Sirainen <tss@iki.fi>
Wed, 20 Feb 2013 13:56:56 +0000 (15:56 +0200)
committerTimo Sirainen <tss@iki.fi>
Wed, 20 Feb 2013 13:56:56 +0000 (15:56 +0200)
src/plugins/acl/acl-api.c

index 062211aa78b070459897a4298f3e4b61b556d725..1a60b4d4ca4393ee3b828c74ceeb66ea246280a2 100644 (file)
@@ -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;