From: Osier Yang Date: Wed, 22 May 2013 12:05:12 +0000 (+0800) Subject: storage_conf: Don't leak "uuid" in virStoragePoolDefParseAuthCephx X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=61c6227341338868717306aa0a6be7b59aaae8c2;p=people%2Fdariof%2Flibvirt.git storage_conf: Don't leak "uuid" in virStoragePoolDefParseAuthCephx Any string returned from virXPathString should be freed. --- diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c index 357f8f92c..d8c7282a4 100644 --- a/src/conf/storage_conf.c +++ b/src/conf/storage_conf.c @@ -466,6 +466,8 @@ virStoragePoolDefParseAuthCephx(xmlXPathContextPtr ctxt, virStoragePoolAuthCephxPtr auth) { char *uuid = NULL; + int ret = -1; + auth->username = virXPathString("string(./auth/@username)", ctxt); if (auth->username == NULL) { virReportError(VIR_ERR_XML_ERROR, @@ -485,19 +487,22 @@ virStoragePoolDefParseAuthCephx(xmlXPathContextPtr ctxt, if (auth->secret.usage != NULL) { virReportError(VIR_ERR_XML_ERROR, "%s", _("either auth secret uuid or usage expected")); - return -1; + goto cleanup; } if (virUUIDParse(uuid, auth->secret.uuid) < 0) { virReportError(VIR_ERR_XML_ERROR, "%s", _("invalid auth secret uuid")); - return -1; + goto cleanup; } auth->secret.uuidUsable = true; } else { auth->secret.uuidUsable = false; } - return 0; + ret = 0; +cleanup: + VIR_FREE(uuid); + return ret; } static int