diff options
author | Zdenek Kabelac <zkabelac@redhat.com> | 2021-03-10 01:25:37 +0100 |
---|---|---|
committer | Zdenek Kabelac <zkabelac@redhat.com> | 2021-03-10 01:29:06 +0100 |
commit | 241c63f7a72cecad085c8983b8a294d8d9985119 (patch) | |
tree | ca154f901cb7c443596338447c107c16419ea74d /tools/vgimportclone.c | |
parent | 131ca0eb9582dd183ed40400caf4fc832f43cb16 (diff) | |
download | lvm2-241c63f7a72cecad085c8983b8a294d8d9985119.tar.gz |
cov: fix iter memleak in vgimportclose
Add missing release of iterator on error path.
Diffstat (limited to 'tools/vgimportclone.c')
-rw-r--r-- | tools/vgimportclone.c | 11 |
1 files 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) |