[libvirt] [PATCH 0/2] virarptable: fix some leaks and format

Address John's comment on v4 Chen Hanxiao (2): virarptable: fix some leaks and format issue qemu: fix some leaks src/qemu/qemu_driver.c | 3 +++ src/util/virarptable.c | 13 +++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) -- 2.14.3

From: Chen Hanxiao <chenhanxiao@gmail.com> fix some leaks and format issue Also support virArpTableFree to get NULL. Signed-off-by: Chen Hanxiao <chenhanxiao@gmail.com> --- src/util/virarptable.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/util/virarptable.c b/src/util/virarptable.c index 92839fdca..c0e90dc4b 100644 --- a/src/util/virarptable.c +++ b/src/util/virarptable.c @@ -47,6 +47,7 @@ VIR_LOG_INIT("util.arptable"); # define NDA_RTA(r) \ ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ndmsg)))) + static int parse_rtattr(struct rtattr *tb[], int max, struct rtattr *rta, int len) { @@ -64,7 +65,9 @@ parse_rtattr(struct rtattr *tb[], int max, struct rtattr *rta, int len) return 0; } -virArpTablePtr virArpTableGet(void) + +virArpTablePtr +virArpTableGet(void) { int num = 0; int msglen; @@ -156,6 +159,7 @@ virArpTablePtr virArpTableGet(void) return table; cleanup: + virArpTableFree(table); VIR_FREE(ipstr); VIR_FREE(nlData); return NULL; @@ -163,7 +167,8 @@ virArpTablePtr virArpTableGet(void) #else -virArpTablePtr virArpTableGet(void) +virArpTablePtr +virArpTableGet(void) { virReportError(VIR_ERR_NO_SUPPORT, "%s", _("get arp table not implemented on this platform")); @@ -176,6 +181,10 @@ void virArpTableFree(virArpTablePtr table) { size_t i; + + if (!table) + return; + for (i = 0; i < table->n; i++) { VIR_FREE(table->t[i].ipaddr); VIR_FREE(table->t[i].mac); -- 2.14.3

From: Chen Hanxiao <chenhanxiao@gmail.com> fix a mem leak Signed-off-by: Chen Hanxiao <chenhanxiao@gmail.com> --- src/qemu/qemu_driver.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 5c55c69af..14b72a8f6 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -20682,6 +20682,8 @@ qemuARPGetInterfaces(virDomainObjPtr vm, if (VIR_APPEND_ELEMENT(ifaces_ret, ifaces_count, iface) < 0) goto cleanup; + + virDomainInterfaceFree(iface); } } } @@ -20691,6 +20693,7 @@ qemuARPGetInterfaces(virDomainObjPtr vm, cleanup: virArpTableFree(table); + virDomainInterfaceFree(iface); if (ifaces_ret) { for (i = 0; i < ifaces_count; i++) -- 2.14.3

On 03/17/2018 11:24 AM, Chen Hanxiao wrote:
From: Chen Hanxiao <chenhanxiao@gmail.com>
fix a mem leak
Signed-off-by: Chen Hanxiao <chenhanxiao@gmail.com> --- src/qemu/qemu_driver.c | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 5c55c69af..14b72a8f6 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -20682,6 +20682,8 @@ qemuARPGetInterfaces(virDomainObjPtr vm,
if (VIR_APPEND_ELEMENT(ifaces_ret, ifaces_count, iface) < 0) goto cleanup; + + virDomainInterfaceFree(iface);
This makes no sense. In fact would be totally wrong if only VIR_APPEND_ELEMENT wouldn't set iface = NULL on successful return.
} } } @@ -20691,6 +20693,7 @@ qemuARPGetInterfaces(virDomainObjPtr vm,
cleanup: virArpTableFree(table); + virDomainInterfaceFree(iface);
if (ifaces_ret) { for (i = 0; i < ifaces_count; i++)
ACK to this hunk though. Michal

On 03/17/2018 11:24 AM, Chen Hanxiao wrote:
Address John's comment on v4
Chen Hanxiao (2): virarptable: fix some leaks and format issue qemu: fix some leaks
src/qemu/qemu_driver.c | 3 +++ src/util/virarptable.c | 13 +++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-)
I'm fixing 2/2, ACKing and pushing. Michal
participants (2)
-
Chen Hanxiao
-
Michal Privoznik