mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-11 07:17:44 +00:00
Coverity: Fix resource leak in xen driver
Coverity logs: Error: RESOURCE_LEAK: /builddir/build/BUILD/libvirt-0.9.10/src/xen/xen_inotify.c:103: alloc_fn: Calling allocation function "xenDaemonLookupByUUID". /builddir/build/BUILD/libvirt-0.9.10/src/xen/xend_internal.c:2534: alloc_fn: Storage is returned from allocation function "virGetDomain". /builddir/build/BUILD/libvirt-0.9.10/src/datatypes.c:191: alloc_arg: "virAlloc" allocates memory that is stored into "ret". /builddir/build/BUILD/libvirt-0.9.10/src/util/memory.c:101: alloc_fn: Storage is returned from allocation function "calloc". /builddir/build/BUILD/libvirt-0.9.10/src/util/memory.c:101: var_assign: Assigning: "*((void **)ptrptr)" = "calloc(1UL, size)". /builddir/build/BUILD/libvirt-0.9.10/src/datatypes.c:210: return_alloc: Returning allocated memory "ret". /builddir/build/BUILD/libvirt-0.9.10/src/xen/xend_internal.c:2534: var_assign: Assigning: "ret" = "virGetDomain(conn, name, uuid)". /builddir/build/BUILD/libvirt-0.9.10/src/xen/xend_internal.c:2541: return_alloc: Returning allocated memory "ret". /builddir/build/BUILD/libvirt-0.9.10/src/xen/xen_inotify.c:103: var_assign: Assigning: "dom" = storage returned from "xenDaemonLookupByUUID(conn, rawuuid)". /builddir/build/BUILD/libvirt-0.9.10/src/xen/xen_inotify.c:126: leaked_storage: Variable "dom" going out of scope leaks the storage it points to. Error: RESOURCE_LEAK: /builddir/build/BUILD/libvirt-0.9.10/src/xen/xen_hypervisor.c:2742: alloc_fn: Calling allocation function "fopen". /builddir/build/BUILD/libvirt-0.9.10/src/xen/xen_hypervisor.c:2742: var_assign: Assigning: "cpuinfo" = storage returned from "fopen("/proc/cpuinfo", "r")". /builddir/build/BUILD/libvirt-0.9.10/src/xen/xen_hypervisor.c:2763: noescape: Variable "cpuinfo" is not freed or pointed-to in function "xenHypervisorMakeCapabilitiesInternal". /builddir/build/BUILD/libvirt-0.9.10/src/xen/xen_hypervisor.c:2574:45: noescape: "xenHypervisorMakeCapabilitiesInternal" does not free or save its pointer parameter "cpuinfo". /builddir/build/BUILD/libvirt-0.9.10/src/xen/xen_hypervisor.c:2768: leaked_storage: Variable "cpuinfo" going out of scope leaks the storage it points to. Error: RESOURCE_LEAK: /builddir/build/BUILD/libvirt-0.9.10/src/xen/xen_hypervisor.c:2752: alloc_fn: Calling allocation function "fopen". /builddir/build/BUILD/libvirt-0.9.10/src/xen/xen_hypervisor.c:2752: var_assign: Assigning: "capabilities" = storage returned from "fopen("/sys/hypervisor/properties/capabilities", "r")". /builddir/build/BUILD/libvirt-0.9.10/src/xen/xen_hypervisor.c:2763: noescape: Variable "capabilities" is not freed or pointed-to in function "xenHypervisorMakeCapabilitiesInternal". /builddir/build/BUILD/libvirt-0.9.10/src/xen/xen_hypervisor.c:2574:60: noescape: "xenHypervisorMakeCapabilitiesInternal" does not free or save its pointer parameter "capabilities". /builddir/build/BUILD/libvirt-0.9.10/src/xen/xen_hypervisor.c:2768: leaked_storage: Variable "capabilities" going out of scope leaks the storage it points to.
This commit is contained in:
parent
cff0d342ad
commit
e91e0ab604
@ -2732,7 +2732,7 @@ xenHypervisorMakeCapabilities(virConnectPtr conn)
|
|||||||
#ifdef __sun
|
#ifdef __sun
|
||||||
return xenHypervisorMakeCapabilitiesSunOS(conn);
|
return xenHypervisorMakeCapabilitiesSunOS(conn);
|
||||||
#else
|
#else
|
||||||
virCapsPtr caps;
|
virCapsPtr caps = NULL;
|
||||||
FILE *cpuinfo, *capabilities;
|
FILE *cpuinfo, *capabilities;
|
||||||
struct utsname utsname;
|
struct utsname utsname;
|
||||||
|
|
||||||
@ -2765,11 +2765,12 @@ xenHypervisorMakeCapabilities(virConnectPtr conn)
|
|||||||
cpuinfo,
|
cpuinfo,
|
||||||
capabilities);
|
capabilities);
|
||||||
if (caps == NULL)
|
if (caps == NULL)
|
||||||
return NULL;
|
goto cleanup;
|
||||||
|
|
||||||
if (virNodeSuspendGetTargetMask(&caps->host.powerMgmt) < 0)
|
if (virNodeSuspendGetTargetMask(&caps->host.powerMgmt) < 0)
|
||||||
VIR_WARN("Failed to get host power management capabilities");
|
VIR_WARN("Failed to get host power management capabilities");
|
||||||
|
|
||||||
|
cleanup:
|
||||||
VIR_FORCE_FCLOSE(cpuinfo);
|
VIR_FORCE_FCLOSE(cpuinfo);
|
||||||
VIR_FORCE_FCLOSE(capabilities);
|
VIR_FORCE_FCLOSE(capabilities);
|
||||||
|
|
||||||
|
@ -123,6 +123,7 @@ xenInotifyXendDomainsDirLookup(virConnectPtr conn, const char *filename,
|
|||||||
|
|
||||||
if (!(*name = strdup(dom->name))) {
|
if (!(*name = strdup(dom->name))) {
|
||||||
virReportOOMError();
|
virReportOOMError();
|
||||||
|
virDomainFree(dom);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
memcpy(uuid, dom->uuid, VIR_UUID_BUFLEN);
|
memcpy(uuid, dom->uuid, VIR_UUID_BUFLEN);
|
||||||
|
Loading…
Reference in New Issue
Block a user