From: Aki Tuomi Date: Sat, 3 Sep 2016 12:23:11 +0000 (+0300) Subject: acl-plugin: Deinit acl_iter on deinit too X-Git-Tag: 2.3.0.rc1~3076 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5f63ee5a915d1b6a89b36a68a00d82ff678fc450;p=thirdparty%2Fdovecot%2Fcore.git acl-plugin: Deinit acl_iter on deinit too --- diff --git a/src/plugins/acl/acl-attributes.c b/src/plugins/acl/acl-attributes.c index 06ed200e8e..592a6de5a0 100644 --- a/src/plugins/acl/acl-attributes.c +++ b/src/plugins/acl/acl-attributes.c @@ -195,6 +195,9 @@ acl_attribute_iter_next_acl(struct acl_mailbox_attribute_iter *aiter) { struct acl_rights rights; + if (aiter->failed) + return NULL; + while (acl_object_list_next(aiter->acl_iter, &rights)) { if (rights.global) continue; @@ -205,7 +208,6 @@ acl_attribute_iter_next_acl(struct acl_mailbox_attribute_iter *aiter) if (acl_object_list_deinit(&aiter->acl_iter) < 0) { mail_storage_set_internal_error(aiter->iter.box->storage); aiter->failed = TRUE; - return NULL; } return NULL; } @@ -237,8 +239,10 @@ int acl_attribute_iter_deinit(struct mailbox_attribute_iter *iter) if (abox->module_ctx.super.attribute_iter_deinit(aiter->super) < 0) ret = -1; } - if (aiter->acl_iter != NULL) - acl_object_list_deinit(&aiter->acl_iter); + if (aiter->acl_iter != && acl_object_list_deinit(&aiter->acl_iter) < 0) { + mail_storage_set_internal_error(aiter->iter.box->storage); + ret = -1; + } if (aiter->acl_name != NULL) str_free(&aiter->acl_name); i_free(aiter);