From: Timo Sirainen Date: Mon, 18 Oct 2010 15:07:17 +0000 (+0100) Subject: acl: Fixed memory leaks. X-Git-Tag: 2.0.6~37 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c22572f8d98de4d8bf3d017421ed9f534b69186b;p=thirdparty%2Fdovecot%2Fcore.git acl: Fixed memory leaks. --- diff --git a/src/plugins/acl/acl-mailbox-list.c b/src/plugins/acl/acl-mailbox-list.c index 8a693bcb89..96accb4936 100644 --- a/src/plugins/acl/acl-mailbox-list.c +++ b/src/plugins/acl/acl-mailbox-list.c @@ -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; diff --git a/src/plugins/acl/acl-mailbox.c b/src/plugins/acl/acl-mailbox.c index e1a4dc032c..182a730c93 100644 --- a/src/plugins/acl/acl-mailbox.c +++ b/src/plugins/acl/acl-mailbox.c @@ -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;