From: Timo Sirainen Date: Tue, 12 Jun 2018 15:01:21 +0000 (+0300) Subject: virtual: Fix memory leak when selecting mailboxes with '-' or /metadata X-Git-Tag: 2.3.4~291 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=beb958d4e1e50f1bf9c2a2780a17d44c5082164c;p=thirdparty%2Fdovecot%2Fcore.git virtual: Fix memory leak when selecting mailboxes with '-' or /metadata --- diff --git a/src/plugins/virtual/virtual-config.c b/src/plugins/virtual/virtual-config.c index 0fbde87232..fd81372572 100644 --- a/src/plugins/virtual/virtual-config.c +++ b/src/plugins/virtual/virtual-config.c @@ -392,7 +392,7 @@ static int virtual_config_expand_wildcards(struct virtual_parse_context *ctx, struct mail_user *user = ctx->mbox->storage->storage.user; ARRAY_TYPE(virtual_backend_box) wildcard_boxes, neg_boxes, metadata_boxes; struct mailbox_list_iterate_context *iter; - struct virtual_backend_box *const *wboxes; + struct virtual_backend_box *const *wboxes, *const *boxp; const char **patterns; const struct mailbox_info *info; unsigned int i, j, count; @@ -440,6 +440,10 @@ static int virtual_config_expand_wildcards(struct virtual_parse_context *ctx, } for (i = 0; i < count; i++) mail_search_args_unref(&wboxes[i]->search_args); + array_foreach(&neg_boxes, boxp) + mail_search_args_unref(&(*boxp)->search_args); + array_foreach(&metadata_boxes, boxp) + mail_search_args_unref(&(*boxp)->search_args); if (mailbox_list_iter_deinit(&iter) < 0) { *error_r = mailbox_list_get_last_internal_error(user->namespaces->list, NULL); return -1;