[libvirt] [PATCH 1/2] coverity: fix memory leak in error path in virnetlink.c

--- src/util/virnetlink.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) diff --git a/src/util/virnetlink.c b/src/util/virnetlink.c index b2e9d51..e199d62 100644 --- a/src/util/virnetlink.c +++ b/src/util/virnetlink.c @@ -340,8 +340,10 @@ virNetlinkEventServiceStart(void) goto error; } - if (virMutexInit(&srv->lock) < 0) + if (virMutexInit(&srv->lock) < 0) { + VIR_FREE(srv); goto error; + } virNetlinkEventServerLock(srv); -- 1.7.7.5

--- src/nodeinfo.c | 21 ++++++++++----------- 1 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/nodeinfo.c b/src/nodeinfo.c index e842474..012f0f8 100644 --- a/src/nodeinfo.c +++ b/src/nodeinfo.c @@ -626,32 +626,31 @@ int nodeGetInfo(virConnectPtr conn ATTRIBUTE_UNUSED, virNodeInfoPtr nodeinfo) { #ifdef __linux__ { - int ret; - char *sysfs_cpuinfo; + int ret = -1; + char *sysfs_cpuinfo = NULL; FILE *cpuinfo = fopen(CPUINFO_PATH, "r"); if (!cpuinfo) { virReportSystemError(errno, _("cannot open %s"), CPUINFO_PATH); - return -1; + return ret; } if (virAsprintf(&sysfs_cpuinfo, CPU_SYS_PATH) < 0) { virReportOOMError(); - return -1; + goto cleanup; } ret = linuxNodeInfoCPUPopulate(cpuinfo, sysfs_cpuinfo, nodeinfo); - VIR_FORCE_FCLOSE(cpuinfo); - if (ret < 0) { - VIR_FREE(sysfs_cpuinfo); - return -1; - } + if (ret < 0) + goto cleanup; - VIR_FREE(sysfs_cpuinfo); /* Convert to KB. */ nodeinfo->memory = physmem_total () / 1024; - return ret; + cleanup: + VIR_FREE(sysfs_cpuinfo); + VIR_FORCE_FCLOSE(cpuinfo); + return ret; } #else /* XXX Solaris will need an impl later if they port QEMU driver */ -- 1.7.7.5

On 05/03/2012 09:28 AM, Guannan Ren wrote:
--- src/nodeinfo.c | 21 ++++++++++----------- 1 files changed, 10 insertions(+), 11 deletions(-)
diff --git a/src/nodeinfo.c b/src/nodeinfo.c index e842474..012f0f8 100644 --- a/src/nodeinfo.c +++ b/src/nodeinfo.c @@ -626,32 +626,31 @@ int nodeGetInfo(virConnectPtr conn ATTRIBUTE_UNUSED, virNodeInfoPtr nodeinfo) {
This duplicates the patch posted here: https://www.redhat.com/archives/libvir-list/2012-May/msg00130.html Osier, can you push your ack'd patches? -- Eric Blake eblake@redhat.com +1-919-301-3266 Libvirt virtualization library http://libvirt.org

On 2012年05月04日 01:21, Eric Blake wrote:
On 05/03/2012 09:28 AM, Guannan Ren wrote:
--- src/nodeinfo.c | 21 ++++++++++----------- 1 files changed, 10 insertions(+), 11 deletions(-)
diff --git a/src/nodeinfo.c b/src/nodeinfo.c index e842474..012f0f8 100644 --- a/src/nodeinfo.c +++ b/src/nodeinfo.c @@ -626,32 +626,31 @@ int nodeGetInfo(virConnectPtr conn ATTRIBUTE_UNUSED, virNodeInfoPtr nodeinfo) {
This duplicates the patch posted here: https://www.redhat.com/archives/libvir-list/2012-May/msg00130.html
Osier, can you push your ack'd patches?
Pushed, thanks for the reviewing. Osier

On 05/03/2012 09:28 AM, Guannan Ren wrote:
--- src/util/virnetlink.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/src/util/virnetlink.c b/src/util/virnetlink.c index b2e9d51..e199d62 100644 --- a/src/util/virnetlink.c +++ b/src/util/virnetlink.c @@ -340,8 +340,10 @@ virNetlinkEventServiceStart(void) goto error; }
- if (virMutexInit(&srv->lock) < 0) + if (virMutexInit(&srv->lock) < 0) { + VIR_FREE(srv); goto error; + }
This repeats the patch already posted here: https://www.redhat.com/archives/libvir-list/2012-May/msg00119.html -- Eric Blake eblake@redhat.com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
participants (3)
-
Eric Blake
-
Guannan Ren
-
Osier Yang