From 99fc551710c50ff93c2514938013562bfc707f60 Mon Sep 17 00:00:00 2001 From: Sergey Poznyakoff Date: Sun, 23 May 2021 12:50:07 +0300 Subject: fix memory leak in folder scanner * libmailutils/mailbox/folder.c (mu_folder_enumerate): Set the destroy_item function on the created list. * libmailutils/mailbox/fsfolder.c (list_helper): Free the resp structure when it is no longer needed. --- libmailutils/mailbox/folder.c | 1 + libmailutils/mailbox/fsfolder.c | 5 ++--- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'libmailutils') diff --git a/libmailutils/mailbox/folder.c b/libmailutils/mailbox/folder.c index 76c296a85..4b3115c8a 100644 --- a/libmailutils/mailbox/folder.c +++ b/libmailutils/mailbox/folder.c @@ -392,6 +392,7 @@ mu_folder_enumerate (mu_folder_t folder, const char *name, status = mu_list_create (&scn.result); if (status) return status; + mu_list_set_destroy_item (scn.result, mu_list_response_free); } status = mu_folder_scan (folder, &scn); if (status == 0) diff --git a/libmailutils/mailbox/fsfolder.c b/libmailutils/mailbox/fsfolder.c index 0b3e59a4a..603388f76 100644 --- a/libmailutils/mailbox/fsfolder.c +++ b/libmailutils/mailbox/fsfolder.c @@ -387,8 +387,7 @@ list_helper (struct mu_folder_scanner *scn, { if (scn->enumfun (data->folder, resp, scn->enumdata)) { - free (resp->name); - free (resp); + mu_list_response_free (resp); stop = 1; break; } @@ -410,7 +409,7 @@ list_helper (struct mu_folder_scanner *scn, fname = NULL; } else - free (resp); + mu_list_response_free (resp); } if ((type & MU_FOLDER_ATTRIBUTE_DIRECTORY) -- cgit v1.2.1