diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 17ddebb575..b3b8c543d5 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -21520,12 +21520,21 @@ virDomainDefParse(const char *xmlStr, xmlDocPtr xml = NULL; virDomainDefPtr def = NULL; int keepBlanksDefault = xmlKeepBlanksDefault(0); + xmlNodePtr root; if (!(xml = virXMLParse(filename, xmlStr, _("(domain_definition)")))) goto cleanup; - def = virDomainDefParseNode(xml, xmlDocGetRootElement(xml), caps, - xmlopt, parseOpaque, flags); + root = xmlDocGetRootElement(xml); + if (!virXMLNodeNameEqual(root, "domain")) { + virReportError(VIR_ERR_XML_ERROR, + _("unexpected root element <%s>, " + "expecting "), + root->name); + goto cleanup; + } + + def = virDomainDefParseNode(xml, root, caps, xmlopt, parseOpaque, flags); cleanup: xmlFreeDoc(xml); @@ -21566,14 +21575,6 @@ virDomainDefParseNode(xmlDocPtr xml, virDomainDefPtr def = NULL; virDomainDefPtr ret = NULL; - if (!virXMLNodeNameEqual(root, "domain")) { - virReportError(VIR_ERR_XML_ERROR, - _("unexpected root element <%s>, " - "expecting "), - root->name); - goto cleanup; - } - ctxt = xmlXPathNewContext(xml); if (ctxt == NULL) { virReportOOMError();