]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
virNetworkDHCPRangeDefParseXML: Use virXMLNodeGetSubelement to find 'lease'
authorPeter Krempa <pkrempa@redhat.com>
Fri, 2 Dec 2022 10:02:58 +0000 (11:02 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Mon, 6 Feb 2023 08:14:00 +0000 (09:14 +0100)
This also prevents a potential memleak when multiple elements would be
present.

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

index b98ae6aa3f0b25ee828054b75dc5b390279e16c5..e33925f857ddda7f61ec64318a8292bc61b77ed0 100644 (file)
@@ -453,7 +453,7 @@ virNetworkDHCPRangeDefParseXML(const char *networkName,
                                virNetworkDHCPRangeDef *range)
 {
     virSocketAddrRange *addr = &range->addr;
-    xmlNodePtr cur = node->children;
+    xmlNodePtr lease;
     g_autofree char *start = NULL;
     g_autofree char *end = NULL;
 
@@ -480,15 +480,9 @@ virNetworkDHCPRangeDefParseXML(const char *networkName,
                               virNetworkIPDefPrefix(ipdef)) < 0)
         return -1;
 
-    while (cur != NULL) {
-        if (cur->type == XML_ELEMENT_NODE &&
-            virXMLNodeNameEqual(cur, "lease")) {
-
-            if (virNetworkDHCPLeaseTimeDefParseXML(&range->lease, cur) < 0)
-                return -1;
-        }
-        cur = cur->next;
-    }
+    if ((lease = virXMLNodeGetSubelement(node, "lease")) &&
+        virNetworkDHCPLeaseTimeDefParseXML(&range->lease, lease) < 0)
+        return -1;
 
     return 0;
 }