diff --git a/src/conf/nwfilter_conf.c b/src/conf/nwfilter_conf.c index 793cb0e9cd..d280df5e04 100644 --- a/src/conf/nwfilter_conf.c +++ b/src/conf/nwfilter_conf.c @@ -2576,21 +2576,25 @@ virNWFilterDefParseXML(xmlXPathContextPtr ctxt) { goto cleanup; if (xmlStrEqual(curr->name, BAD_CAST "rule")) { - if (!(entry->rule = virNWFilterRuleParse(curr))) + if (!(entry->rule = virNWFilterRuleParse(curr))) { + virNWFilterEntryFree(entry); goto cleanup; + } } else if (xmlStrEqual(curr->name, BAD_CAST "filterref")) { - if (!(entry->include = virNWFilterIncludeParse(curr))) + if (!(entry->include = virNWFilterIncludeParse(curr))) { + virNWFilterEntryFree(entry); goto cleanup; + } } if (entry->rule || entry->include) { if (VIR_REALLOC_N(ret->filterEntries, ret->nentries+1) < 0) { - VIR_FREE(entry); + virNWFilterEntryFree(entry); goto cleanup; } ret->filterEntries[ret->nentries++] = entry; } else - VIR_FREE(entry); + virNWFilterEntryFree(entry); } curr = curr->next; }