From: Laine Stump Date: Thu, 11 Aug 2011 03:28:05 +0000 (-0400) Subject: network: eliminate potential memory leak on parse failure X-Git-Tag: v0.9.5-rc1~261 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4a6ffae3b64287e63cab6f1ab40d162dcd898333;p=thirdparty%2Flibvirt.git network: eliminate potential memory leak on parse failure While the first encountered dns host record is being parsed, it's possible for virNetworkDef::hosts to point to memory that has been allocated, but virNetworkDef::nhosts to still be 0. If there is a failure during that time, virNetworkDef::hosts will be leaked. Although this isn't currently the case for virNetworkDef::txtrecords, it could become that way through future re-factoring, and it hurts nothing to restructure the freeing of txtrecord data to match that of hosts data. --- diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index b11c4820aa..e055094c15 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -127,16 +127,16 @@ static void virNetworkDNSDefFree(virNetworkDNSDefPtr def) VIR_FREE(def->txtrecords[def->ntxtrecords].name); VIR_FREE(def->txtrecords[def->ntxtrecords].value); } - VIR_FREE(def->txtrecords); } + VIR_FREE(def->txtrecords); if (def->nhosts) { while (def->nhosts--) { while (def->hosts[def->nhosts].nnames--) VIR_FREE(def->hosts[def->nhosts].names[def->hosts[def->nhosts].nnames]); VIR_FREE(def->hosts[def->nhosts].names); } - VIR_FREE(def->hosts); } + VIR_FREE(def->hosts); VIR_FREE(def); } }