From 388611da8330fb19693caf927680e9af08d5738e Mon Sep 17 00:00:00 2001 Message-Id: <388611da8330fb19693caf927680e9af08d5738e@dist-git> From: Peter Krempa Date: Wed, 19 Feb 2020 15:10:27 +0100 Subject: [PATCH] qemuDomainGetStatsIOThread: Don't leak array with 0 iothreads MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit qemuMonitorGetIOThreads returns a NULL-terminated list even when 0 iothreads are present. The caller didn't perform cleanup if there were 0 iothreads leaking the array. https://bugzilla.redhat.com/show_bug.cgi?id=1804548 Fixes: d1eac92784573559b6fd56836e33b215c89308e3 Reported-by: Jing Yan Signed-off-by: Peter Krempa Reviewed-by: Ján Tomko (cherry picked from commit 9bf9e0ae6af38c806f4672ca7b12a6b38d5a9581) Message-Id: Reviewed-by: Ján Tomko --- src/qemu/qemu_driver.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index af81c4a6e4..69e4f7264b 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -21532,8 +21532,12 @@ qemuDomainGetStatsIOThread(virQEMUDriverPtr driver, if ((niothreads = qemuDomainGetIOThreadsMon(driver, dom, &iothreads)) < 0) return -1; - if (niothreads == 0) - return 0; + /* qemuDomainGetIOThreadsMon returns a NULL-terminated list, so we must free + * it even if it returns 0 */ + if (niothreads == 0) { + ret = 0; + goto cleanup; + } if (virTypedParamListAddUInt(params, niothreads, "iothread.count") < 0) goto cleanup; -- 2.25.0