On 2012年11月15日 10:01, Eric Blake wrote:
On 11/14/2012 06:54 AM, Osier Yang wrote:
QEMU supports to set vendor and product strings for disk since

s/to set/setting/

1.2.0 (only scsi-disk, scsi-hd, scsi-cd support it), this patch
exposes it with new XML elements<vendor>  and<product>  of disk
device.
---
+++ b/docs/schemas/domaincommon.rng
@@ -905,6 +905,16 @@
            <ref name="wwn"/>
          </element>
        </optional>
+<optional>
+<element name="vendor">
+<text/>

We could use something stricter than<text/>  so that RNG validation
would reject the same names our code rejects, such as:

<data type='string'>
   <param name='pattern'>[a-zA-Z0-9]{0,8}</param>
</data>

Agreed.


+                }
+
+                if (!virStrIsAlpha(vendor)) {
+                    virReportError(VIR_ERR_XML_ERROR, "%s",
+                                   _("disk vendor is not alphanemuric 
string"));

s/alphanemuric/alphanumeric/

+                    goto error;
+                }
+            } else if (!product&&
+                       xmlStrEqual(cur->name, BAD_CAST "product")) {
+                product = (char *)xmlNodeGetContent(cur);
+
+                if (strlen(vendor)>  PRODUCT_LEN) {
+                    virReportError(VIR_ERR_XML_ERROR, "%s",
+                                   _("disk product is more than 16 
characters"));
+                    goto error;
+                }
+
+                if (!virStrIsAlpha(product)) {
+                    virReportError(VIR_ERR_XML_ERROR, "%s",
+                                   _("disk product is not alphanemuric 
string"));

and again

+++ b/src/libvirt_private.syms
@@ -1279,6 +1279,7 @@ virSetUIDGID;
  virSkipSpaces;
  virSkipSpacesAndBackslash;
  virSkipSpacesBackwards;
+virStrIsAlpha;

This name is misleading; I'd use virStrIsAlnum, to match the<ctype.h>
difference between alpha and alnum.

Agreed.


Bigger problem - I see where you parse the new XML, but not where you
generate it back out when formatting.

Oops, I missed that when rebasing.

tests/qemuxml2xmltest.c is a good
place to tweak to make sure we can round trip canonical XML.  For that,
I think you need a v3.


Okay.

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to