From: John Ferlan Date: Sat, 13 Jul 2013 19:15:38 +0000 (-0400) Subject: storage_conf: Move username processing into common function X-Git-Tag: CVE-2013-4154~11 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=37029be4c0aa945a4f144e66eb985ffe3aa01b77;p=thirdparty%2Flibvirt.git storage_conf: Move username processing into common function Move the auth->username processing into virStoragePoolDefParseAuth save the resulting username into chap/cephx specific data --- diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c index 404545a453..c89a5b4161 100644 --- a/src/conf/storage_conf.c +++ b/src/conf/storage_conf.c @@ -464,13 +464,6 @@ virStoragePoolDefParseAuthChap(xmlXPathContextPtr ctxt, char *uuid = NULL; int ret = -1; - auth->username = virXPathString("string(./auth/@username)", ctxt); - if (auth->username == NULL) { - virReportError(VIR_ERR_XML_ERROR, "%s", - _("missing auth username attribute")); - return -1; - } - uuid = virXPathString("string(./auth/secret/@uuid)", ctxt); auth->secret.usage = virXPathString("string(./auth/secret/@usage)", ctxt); if (uuid == NULL && auth->secret.usage == NULL) { @@ -508,13 +501,6 @@ virStoragePoolDefParseAuthCephx(xmlXPathContextPtr ctxt, char *uuid = NULL; int ret = -1; - auth->username = virXPathString("string(./auth/@username)", ctxt); - if (auth->username == NULL) { - virReportError(VIR_ERR_XML_ERROR, "%s", - _("missing auth username attribute")); - return -1; - } - uuid = virXPathString("string(./auth/secret/@uuid)", ctxt); auth->secret.usage = virXPathString("string(./auth/secret/@usage)", ctxt); if (uuid == NULL && auth->secret.usage == NULL) { @@ -551,6 +537,7 @@ virStoragePoolDefParseAuth(xmlXPathContextPtr ctxt, { int ret = -1; char *authType = NULL; + char *username = NULL; authType = virXPathString("string(./auth/@type)", ctxt); if (authType == NULL) { @@ -567,12 +554,22 @@ virStoragePoolDefParseAuth(xmlXPathContextPtr ctxt, goto cleanup; } + username = virXPathString("string(./auth/@username)", ctxt); + if (username == NULL) { + virReportError(VIR_ERR_XML_ERROR, "%s", + _("missing auth username attribute")); + goto cleanup; + } + if (source->authType == VIR_STORAGE_POOL_AUTH_CHAP) { + source->auth.chap.username = username; + username = NULL; if (virStoragePoolDefParseAuthChap(ctxt, &source->auth.chap) < 0) goto cleanup; } - - if (source->authType == VIR_STORAGE_POOL_AUTH_CEPHX) { + else if (source->authType == VIR_STORAGE_POOL_AUTH_CEPHX) { + source->auth.cephx.username = username; + username = NULL; if (virStoragePoolDefParseAuthCephx(ctxt, &source->auth.cephx) < 0) goto cleanup; } @@ -581,6 +578,7 @@ virStoragePoolDefParseAuth(xmlXPathContextPtr ctxt, cleanup: VIR_FREE(authType); + VIR_FREE(username); return ret; }