]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
virDomainNetIPInfoParseXML: Don't VIR_FREE and overwrite autofreed 'nodes'
authorPeter Krempa <pkrempa@redhat.com>
Thu, 15 Sep 2022 15:58:32 +0000 (17:58 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Mon, 3 Oct 2022 12:43:17 +0000 (14:43 +0200)
Use two separate variables for the nodes and count instead.

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

index 292bd1937cfbc03d9ee54917204f0fb17fddfeab..26a24ecd55816af801e32e1081730561469efb78 100644 (file)
@@ -6216,31 +6216,32 @@ virDomainNetIPInfoParseXML(const char *source,
                            xmlXPathContextPtr ctxt,
                            virNetDevIPInfo *def)
 {
-    int nnodes;
     int ret = -1;
     size_t i;
-    g_autofree xmlNodePtr *nodes = NULL;
+    g_autofree xmlNodePtr *ipNodes = NULL;
+    int nipNodes;
+    g_autofree xmlNodePtr *routeNodes = NULL;
+    int nrouteNodes;
 
-    if ((nnodes = virXPathNodeSet("./ip", ctxt, &nodes)) < 0)
+    if ((nipNodes = virXPathNodeSet("./ip", ctxt, &ipNodes)) < 0)
         goto cleanup;
 
-    for (i = 0; i < nnodes; i++) {
+    for (i = 0; i < nipNodes; i++) {
         virNetDevIPAddr *ip = NULL;
 
-        if (!(ip = virDomainNetIPParseXML(nodes[i])))
+        if (!(ip = virDomainNetIPParseXML(ipNodes[i])))
             goto cleanup;
 
         VIR_APPEND_ELEMENT(def->ips, def->nips, ip);
     }
-    VIR_FREE(nodes);
 
-    if ((nnodes = virXPathNodeSet("./route", ctxt, &nodes)) < 0)
+    if ((nrouteNodes = virXPathNodeSet("./route", ctxt, &routeNodes)) < 0)
         goto cleanup;
 
-    for (i = 0; i < nnodes; i++) {
+    for (i = 0; i < nrouteNodes; i++) {
         virNetDevIPRoute *route = NULL;
 
-        if (!(route = virNetDevIPRouteParseXML(source, nodes[i], ctxt)))
+        if (!(route = virNetDevIPRouteParseXML(source, routeNodes[i], ctxt)))
             goto cleanup;
 
         VIR_APPEND_ELEMENT(def->routes, def->nroutes, route);