mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-24 14:45:24 +00:00
cpu: Fail when CPU type cannot be detected from XML
When autodetecting whether XML describes guest or host CPU, the presence of <arch> element is checked. If it's present, we treat the XML as host CPU definition. Which is right, since guest CPU definitions do not contain <arch> element. However, if at the same time the root <cpu> element contains `match' attribute, we would silently ignore it and still treat the XML as host CPU. We should rather refuse such invalid XML.
This commit is contained in:
parent
ac3daf0899
commit
517aba9fac
@ -130,9 +130,15 @@ virCPUDefParseXML(const xmlNodePtr node,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (mode == VIR_CPU_TYPE_AUTO) {
|
if (mode == VIR_CPU_TYPE_AUTO) {
|
||||||
if (virXPathBoolean("boolean(./arch)", ctxt))
|
if (virXPathBoolean("boolean(./arch)", ctxt)) {
|
||||||
|
if (virXPathBoolean("boolean(./@match)", ctxt)) {
|
||||||
|
virCPUReportError(VIR_ERR_XML_ERROR, "%s",
|
||||||
|
_("'arch' element element cannot be used inside 'cpu'"
|
||||||
|
" element with 'match' attribute'"));
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
def->type = VIR_CPU_TYPE_HOST;
|
def->type = VIR_CPU_TYPE_HOST;
|
||||||
else
|
} else
|
||||||
def->type = VIR_CPU_TYPE_GUEST;
|
def->type = VIR_CPU_TYPE_GUEST;
|
||||||
} else
|
} else
|
||||||
def->type = mode;
|
def->type = mode;
|
||||||
|
Loading…
Reference in New Issue
Block a user