]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
cpu: Fail when CPU type cannot be detected from XML
authorJiri Denemark <jdenemar@redhat.com>
Mon, 12 Jul 2010 14:08:00 +0000 (16:08 +0200)
committerJiri Denemark <jdenemar@redhat.com>
Mon, 12 Jul 2010 17:45:22 +0000 (19:45 +0200)
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.

src/conf/cpu_conf.c

index d9aa69c22ecaef88549e08d67e10eaa576f0cae7..32746599541aaf5e616e79d64a17226c7074f0a3 100644 (file)
@@ -130,9 +130,15 @@ virCPUDefParseXML(const xmlNodePtr node,
     }
 
     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;
-        else
+        else
             def->type = VIR_CPU_TYPE_GUEST;
     } else
         def->type = mode;