virNetworkDHCPHostDefParseXML: Use virXMLNodeGetSubelement to find 'lease'

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>
This commit is contained in:
Peter Krempa 2022-12-02 11:02:58 +01:00
parent 7bd0e8674c
commit 9598c3c684

View File

@ -501,7 +501,7 @@ virNetworkDHCPHostDefParseXML(const char *networkName,
g_autofree char *id = NULL; g_autofree char *id = NULL;
virMacAddr addr; virMacAddr addr;
virSocketAddr inaddr; virSocketAddr inaddr;
xmlNodePtr cur = node->children; xmlNodePtr lease;
mac = virXMLPropString(node, "mac"); mac = virXMLPropString(node, "mac");
if (mac != NULL) { if (mac != NULL) {
@ -593,15 +593,9 @@ virNetworkDHCPHostDefParseXML(const char *networkName,
} }
} }
while (cur != NULL) { if ((lease = virXMLNodeGetSubelement(node, "lease")) &&
if (cur->type == XML_ELEMENT_NODE && virNetworkDHCPLeaseTimeDefParseXML(&host->lease, lease) < 0)
virXMLNodeNameEqual(cur, "lease")) { return -1;
if (virNetworkDHCPLeaseTimeDefParseXML(&host->lease, cur) < 0)
return -1;
}
cur = cur->next;
}
host->mac = g_steal_pointer(&mac); host->mac = g_steal_pointer(&mac);
host->id = g_steal_pointer(&id); host->id = g_steal_pointer(&id);