mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 03:12:22 +00:00
storage: Avoid leak in virStorageUtilGlusterExtractPoolSources()
The contents of volname would be leaked if the function were to be passed an invalid pooltype by the caller. Make sure the memory is released instead.
This commit is contained in:
parent
ff483133fe
commit
611ddefc16
@ -2846,7 +2846,7 @@ virStorageUtilGlusterExtractPoolSources(const char *host,
|
||||
xmlXPathContextPtr ctxt = NULL;
|
||||
xmlNodePtr *nodes = NULL;
|
||||
virStoragePoolSource *src = NULL;
|
||||
char *volname;
|
||||
char *volname = NULL;
|
||||
size_t i;
|
||||
int nnodes;
|
||||
int ret = -1;
|
||||
@ -2871,12 +2871,11 @@ virStorageUtilGlusterExtractPoolSources(const char *host,
|
||||
|
||||
if (pooltype == VIR_STORAGE_POOL_NETFS) {
|
||||
src->format = VIR_STORAGE_POOL_NETFS_GLUSTERFS;
|
||||
src->dir = volname;
|
||||
VIR_STEAL_PTR(src->dir, volname);
|
||||
} else if (pooltype == VIR_STORAGE_POOL_GLUSTER) {
|
||||
src->name = volname;
|
||||
|
||||
if (VIR_STRDUP(src->dir, "/") < 0)
|
||||
goto cleanup;
|
||||
VIR_STEAL_PTR(src->name, volname);
|
||||
} else {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("unsupported gluster lookup"));
|
||||
@ -2894,6 +2893,7 @@ virStorageUtilGlusterExtractPoolSources(const char *host,
|
||||
ret = nnodes;
|
||||
|
||||
cleanup:
|
||||
VIR_FREE(volname);
|
||||
VIR_FREE(nodes);
|
||||
xmlXPathFreeContext(ctxt);
|
||||
xmlFreeDoc(doc);
|
||||
|
Loading…
x
Reference in New Issue
Block a user