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:
Andrea Bolognani 2017-04-05 18:24:33 +02:00
parent ff483133fe
commit 611ddefc16

View File

@ -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);