[PATCH 07/12] virNodeDeviceCapVPDParseCustomFields: Don't use 'virXPathStringLimit'

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxx>
---
 src/conf/node_device_conf.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/conf/node_device_conf.c b/src/conf/node_device_conf.c
index ca534dfbed..0bac0fde8d 100644
--- a/src/conf/node_device_conf.c
+++ b/src/conf/node_device_conf.c
@@ -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;
-- 
2.31.1




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux