]> xenbits.xensource.com Git - libvirt.git/commitdiff
conf: Report error if invalid type specified for character device
authorOsier Yang <jyang@redhat.com>
Sun, 9 Jan 2011 11:18:52 +0000 (19:18 +0800)
committerEric Blake <eblake@redhat.com>
Mon, 10 Jan 2011 17:24:44 +0000 (10:24 -0700)
If invalid type is specified, e.g.
<serial type='foo'>
    <target port='0'/>
</serial>

We replace 'foo' with "null" type implicitly, without reporting an
error message to tell the user, and "start" or "edit" the domain
will be success.

It's not good to guess what the user wants, This patch is to fix
the problem.

* src/conf/domain_conf.c

src/conf/domain_conf.c

index c857a8904096e5cd2cc71052331d95b0bbb8109d..b4df38c0b000b7bf08a88da240aeb7928429b247 100644 (file)
@@ -2821,10 +2821,14 @@ virDomainChrDefParseXML(virCapsPtr caps,
     }
 
     type = virXMLPropString(node, "type");
-    if (type == NULL)
+    if (type == NULL) {
         def->type = VIR_DOMAIN_CHR_TYPE_PTY;
-    else if ((def->type = virDomainChrTypeFromString(type)) < 0)
-        def->type = VIR_DOMAIN_CHR_TYPE_NULL;
+    } else if ((def->type = virDomainChrTypeFromString(type)) < 0) {
+        virDomainReportError(VIR_ERR_XML_ERROR,
+                             _("unknown type presented to host for character device: %s"),
+                             type);
+        goto error;
+    }
 
     nodeName = (const char *) node->name;
     if ((def->deviceType = virDomainChrDeviceTypeFromString(nodeName)) < 0) {