]> xenbits.xensource.com Git - libvirt.git/commitdiff
util: check for an illegal character in a XML namespace prefix
authorErik Skultety <eskultet@redhat.com>
Thu, 4 Dec 2014 13:37:09 +0000 (14:37 +0100)
committerMichal Privoznik <mprivozn@redhat.com>
Fri, 5 Dec 2014 11:40:10 +0000 (12:40 +0100)
When user tries to insert element metadata providing a namespace
declaration as well, currently we insert the element without any validation
check for XML prefix (if provided). The next VM start would then
fail with parse error. This patch fixes this issue by adding a call to
xmlValidateNCName function to check for illegal characters in the
prefix.
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1143921

src/util/virxml.c

index 7f591fb4f1a892c69c495d60c1dcda59daff7629..93f8590cded84d3b65f494eaa1197a76cfc84400 100644 (file)
@@ -1066,6 +1066,12 @@ virXMLInjectNamespace(xmlNodePtr node,
 {
     xmlNsPtr ns;
 
+    if (xmlValidateNCName((const unsigned char *)key, 1) != 0) {
+        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+                       _("failed to validate prefix for a new XML namespace"));
+        return -1;
+    }
+
     if (!(ns = xmlNewNs(node, (const unsigned char *)uri, (const unsigned char *)key))) {
         virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                        _("failed to create a new XML namespace"));