[lvm-devel] main - cov: fix iter memleak in vgimportclose

Zdenek Kabelac zkabelac at sourceware.org
Wed Mar 10 00:36:38 UTC 2021


Gitweb:        https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=241c63f7a72cecad085c8983b8a294d8d9985119
Commit:        241c63f7a72cecad085c8983b8a294d8d9985119
Parent:        131ca0eb9582dd183ed40400caf4fc832f43cb16
Author:        Zdenek Kabelac <zkabelac at redhat.com>
AuthorDate:    Wed Mar 10 01:25:37 2021 +0100
Committer:     Zdenek Kabelac <zkabelac at redhat.com>
CommitterDate: Wed Mar 10 01:29:06 2021 +0100

cov: fix iter memleak in vgimportclose

Add missing release of iterator on error path.
---
 tools/vgimportclone.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/tools/vgimportclone.c b/tools/vgimportclone.c
index 58cae5fac..18f10f49a 100644
--- a/tools/vgimportclone.c
+++ b/tools/vgimportclone.c
@@ -190,6 +190,7 @@ static int _get_other_devs(struct cmd_context *cmd, struct dm_list *new_devs, st
 	struct dev_iter *iter;
 	struct device *dev;
 	struct device_list *devl;
+	int r = 1;
 
 	if (!(iter = dev_iter_create(cmd->filter, 0)))
 		return_0;
@@ -197,14 +198,16 @@ static int _get_other_devs(struct cmd_context *cmd, struct dm_list *new_devs, st
 	while ((dev = dev_iter_get(cmd, iter))) {
 		if (_get_device_list(new_devs, dev))
 			continue;
-		if (!(devl = malloc(sizeof(*devl))))
-			return_0;
+		if (!(devl = malloc(sizeof(*devl)))) {
+			r = 0;
+			goto_bad;
+		}
 		devl->dev = dev;
 		dm_list_add(other_devs, &devl->list);
 	}
-
+bad:
 	dev_iter_destroy(iter);
-	return 1;
+	return r;
 }
 
 int vgimportclone(struct cmd_context *cmd, int argc, char **argv)




More information about the lvm-devel mailing list