]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
virNodeDeviceCapVPDParseCustomFields: Don't use 'virXPathStringLimit'
authorPeter Krempa <pkrempa@redhat.com>
Mon, 22 Nov 2021 16:17:24 +0000 (17:17 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Wed, 24 Nov 2021 08:20:39 +0000 (09:20 +0100)
virXPathStringLimit doesn't give callers a way to differentiate between
the queried XPath being empty and the length limit being exceeded.

This means that callers are overwriting the error message.

Move the length checks into the caller.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/conf/node_device_conf.c

index ca534dfbed0d2a9ad978f9301dd99aebac5f47ca..0bac0fde8d346e79a84fdba8a686a70d25a582c3 100644 (file)
@@ -955,7 +955,8 @@ virNodeDeviceCapVPDParseCustomFields(xmlXPathContextPtr ctxt, virPCIVPDResource
         g_autofree char *keyword = NULL;
 
         ctxt->node = nodes[i];
-        if (!(index = virXPathStringLimit("string(./@index[1])", 2, ctxt))) {
+        if (!(index = virXPathString("string(./@index[1])", ctxt)) ||
+            strlen(index) > 1) {
             virReportError(VIR_ERR_XML_ERROR, "%s",
                     _("<vendor_field> evaluation has failed"));
             continue;
@@ -983,7 +984,8 @@ virNodeDeviceCapVPDParseCustomFields(xmlXPathContextPtr ctxt, virPCIVPDResource
             VIR_XPATH_NODE_AUTORESTORE(ctxt);
 
             ctxt->node = nodes[i];
-            if (!(index = virXPathStringLimit("string(./@index[1])", 2, ctxt))) {
+            if (!(index = virXPathString("string(./@index[1])", ctxt)) ||
+                strlen(index) > 1) {
                 virReportError(VIR_ERR_XML_ERROR, "%s",
                         _("<system_field> evaluation has failed"));
                 continue;