]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
virInterfaceLinkParseXML: Use virXMLProp*
authorTim Wiederhake <twiederh@redhat.com>
Wed, 21 Apr 2021 12:08:08 +0000 (14:08 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Wed, 21 Apr 2021 13:13:00 +0000 (15:13 +0200)
This strictens the parser to disallow negative values (interpreted as
`UINT_MAX + value + 1`) for attribute `speed`, which does not make sense for
a value measured in Mbits per second.

Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
src/conf/device_conf.c

index 9b0b81b2cb0f44d17c8b174361cbfced516f9c11..034f072df4ff54414e0bfbf85b811e756bc3dd8a 100644 (file)
@@ -465,28 +465,13 @@ int
 virInterfaceLinkParseXML(xmlNodePtr node,
                          virNetDevIfLink *lnk)
 {
-    int state;
-
-    g_autofree char *stateStr = virXMLPropString(node, "state");
-    g_autofree char *speedStr = virXMLPropString(node, "speed");
-
-    if (stateStr) {
-        if ((state = virNetDevIfStateTypeFromString(stateStr)) < 0) {
-            virReportError(VIR_ERR_XML_ERROR,
-                           _("unknown link state: %s"),
-                           stateStr);
-            return -1;
-        }
-        lnk->state = state;
-    }
+    if (virXMLPropEnum(node, "state", virNetDevIfStateTypeFromString,
+                       VIR_XML_PROP_NONE, &lnk->state) < 0)
+        return -1;
 
-    if (speedStr &&
-        virStrToLong_ui(speedStr, NULL, 10, &lnk->speed) < 0) {
-        virReportError(VIR_ERR_XML_ERROR,
-                       _("Unable to parse link speed: %s"),
-                       speedStr);
+    if (virXMLPropUInt(node, "speed", 10, VIR_XML_PROP_NONE, &lnk->speed) < 0)
         return -1;
-    }
+
     return 0;
 }