]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
virNodeDeviceCapVPDParseXML: Fix error reporting
authorPeter Krempa <pkrempa@redhat.com>
Tue, 30 Jan 2024 16:41:44 +0000 (17:41 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Wed, 31 Jan 2024 16:24:07 +0000 (17:24 +0100)
Don't overwrite already reported errors and improve parsing of
attributes.

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

index 0f2c3419671c1c893b0f2746c29446d9c81cfdab..c68ac3af78791364c07f01714d98770d07c14693 100644 (file)
@@ -1059,11 +1059,11 @@ virNodeDeviceCapVPDParseXML(xmlXPathContextPtr ctxt, virPCIVPDResource **res)
 
     if (!(newres->name = virXPathString("string(./name)", ctxt))) {
         virReportError(VIR_ERR_XML_ERROR, "%s",
-                _("Could not read a device name from the <name> element"));
+                       _("Could not read a device name from the <name> element"));
         return -1;
     }
 
-    if ((nfields = virXPathNodeSet("./fields[@access]", ctxt, &nodes)) < 0)
+    if ((nfields = virXPathNodeSet("./fields", ctxt, &nodes)) < 0)
         return -1;
 
     for (i = 0; i < nfields; i++) {
@@ -1071,27 +1071,19 @@ virNodeDeviceCapVPDParseXML(xmlXPathContextPtr ctxt, virPCIVPDResource **res)
         VIR_XPATH_NODE_AUTORESTORE(ctxt);
 
         ctxt->node = nodes[i];
-        if (!(access = virXPathString("string(./@access[1])", ctxt))) {
-            virReportError(VIR_ERR_XML_ERROR, "%s",
-                    _("VPD fields access type parsing has failed"));
+
+        if (!(access = virXMLPropStringRequired(nodes[i], "access")))
             return -1;
-        }
 
         if (STREQ(access, "readonly")) {
-            if (virNodeDeviceCapVPDParseReadOnlyFields(ctxt, newres) < 0) {
-                virReportError(VIR_ERR_XML_ERROR,
-                        _("Could not parse %1$s VPD resource fields"), access);
+            if (virNodeDeviceCapVPDParseReadOnlyFields(ctxt, newres) < 0)
                 return -1;
-            }
         } else if (STREQ(access, "readwrite")) {
-            if (virNodeDeviceCapVPDParseReadWriteFields(ctxt, newres) < 0) {
-                virReportError(VIR_ERR_XML_ERROR,
-                        _("Could not parse %1$s VPD resource fields"), access);
+            if (virNodeDeviceCapVPDParseReadWriteFields(ctxt, newres) < 0)
                 return -1;
-            }
         } else {
             virReportError(VIR_ERR_XML_ERROR,
-                           _("Unsupported VPD field access type specified %1$s"),
+                           _("Unsupported VPD field access type '%1$s'"),
                            access);
             return -1;
         }