]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
network: plug memory leak
authorEric Blake <eblake@redhat.com>
Wed, 24 Nov 2010 20:29:38 +0000 (13:29 -0700)
committerEric Blake <eblake@redhat.com>
Wed, 24 Nov 2010 22:23:43 +0000 (15:23 -0700)
* src/conf/network_conf.c (virNetworkDHCPRangeDefParseXML): Free
xml strings when no longer referenced.

src/conf/network_conf.c

index 9868250108c90fc8cbd6eebbbfd23da3dd75a549..b469269e10c0e6d5003bff6d2a4b62d2b118d883 100644 (file)
@@ -252,10 +252,10 @@ virNetworkDHCPRangeDefParseXML(virNetworkDefPtr def,
                 VIR_FREE(end);
                 return -1;
             }
+            VIR_FREE(start);
+            VIR_FREE(end);
 
             if (VIR_REALLOC_N(def->ranges, def->nranges + 1) < 0) {
-                VIR_FREE(start);
-                VIR_FREE(end);
                 virReportOOMError();
                 return -1;
             }
@@ -300,8 +300,8 @@ virNetworkDHCPRangeDefParseXML(virNetworkDefPtr def,
                 cur = cur->next;
                 continue;
             }
+            VIR_FREE(ip);
             if (VIR_REALLOC_N(def->hosts, def->nhosts + 1) < 0) {
-                VIR_FREE(ip);
                 VIR_FREE(mac);
                 VIR_FREE(name);
                 virReportOOMError();
@@ -326,11 +326,15 @@ virNetworkDHCPRangeDefParseXML(virNetworkDefPtr def,
             server = virXMLPropString(cur, "server");
 
             if (server &&
-                virSocketParseAddr(server, &inaddr, AF_UNSPEC) < 0)
+                virSocketParseAddr(server, &inaddr, AF_UNSPEC) < 0) {
+                VIR_FREE(file);
+                VIR_FREE(server);
                 return -1;
+            }
 
             def->bootfile = file;
             def->bootserver = inaddr;
+            VIR_FREE(server);
         }
 
         cur = cur->next;