]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
acl: Fixed memory leaks.
authorTimo Sirainen <tss@iki.fi>
Mon, 18 Oct 2010 15:07:17 +0000 (16:07 +0100)
committerTimo Sirainen <tss@iki.fi>
Mon, 18 Oct 2010 15:07:17 +0000 (16:07 +0100)
src/plugins/acl/acl-mailbox-list.c
src/plugins/acl/acl-mailbox.c

index 8a693bcb89fd90aa3aa85e4128d0c582744a48a4..96accb4936a7c49fa2cf2e3df57372c4e8c61efa 100644 (file)
@@ -494,6 +494,14 @@ acl_mailbox_list_create_dir(struct mailbox_list *list, const char *name,
        return alist->module_ctx.super.create_mailbox_dir(list, name, type);
 }
 
+static void acl_mailbox_list_deinit(struct mailbox_list *list)
+{
+       struct acl_mailbox_list *alist = ACL_LIST_CONTEXT(list);
+
+       acl_backend_deinit(&alist->rights.backend);
+       alist->module_ctx.super.deinit(list);
+}
+
 static void acl_mailbox_list_init_shared(struct mailbox_list *list)
 {
        struct acl_mailbox_list *alist;
@@ -502,6 +510,7 @@ static void acl_mailbox_list_init_shared(struct mailbox_list *list)
        alist = p_new(list->pool, struct acl_mailbox_list, 1);
        alist->module_ctx.super = *v;
        list->vlast = &alist->module_ctx.super;
+       v->deinit = acl_mailbox_list_deinit;
        v->iter_init = acl_mailbox_list_iter_init_shared;
 
        MODULE_CONTEXT_SET(list, acl_mailbox_list_module, alist);
@@ -534,6 +543,7 @@ static void acl_mailbox_list_init_default(struct mailbox_list *list)
        alist = p_new(list->pool, struct acl_mailbox_list, 1);
        alist->module_ctx.super = *v;
        list->vlast = &alist->module_ctx.super;
+       v->deinit = acl_mailbox_list_deinit;
        v->iter_init = acl_mailbox_list_iter_init;
        v->iter_next = acl_mailbox_list_iter_next;
        v->iter_deinit = acl_mailbox_list_iter_deinit;
index e1a4dc032c9ec5fc160ce543897a05494b549da2..182a730c93738173b96ac9d777022abee1862c05 100644 (file)
@@ -510,10 +510,10 @@ void acl_mailbox_allocated(struct mailbox *box)
        abox = p_new(box->pool, struct acl_mailbox, 1);
        abox->module_ctx.super = *v;
        box->vlast = &abox->module_ctx.super;
-       abox->aclobj = acl_object_init_from_name(alist->rights.backend,
-                                                mailbox_get_name(box));
 
        if ((box->flags & MAILBOX_FLAG_IGNORE_ACLS) == 0) {
+               abox->aclobj = acl_object_init_from_name(alist->rights.backend,
+                                                        mailbox_get_name(box));
                abox->acl_enabled = TRUE;
                v->is_readonly = acl_is_readonly;
                v->allow_new_keywords = acl_allow_new_keywords;