From 772e42473f778f3687c1321ad2550be280c1c2f4 Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: May 05 2017 06:49:15 +0000 Subject: virNWFilterObjListFree: Don't leak nwfilters->objs When adding a nwfilter onto the list in virNWFilterObjListAssignDef() this array is re-allocated to match demand for new size. However, it is never freed leading to a leak: ==26535== 136 bytes in 1 blocks are definitely lost in loss record 1,079 of 1,250 ==26535== at 0x4C2E2BE: realloc (vg_replace_malloc.c:785) ==26535== by 0x54BA28E: virReallocN (viralloc.c:245) ==26535== by 0x54BA384: virExpandN (viralloc.c:294) ==26535== by 0x54BA657: virInsertElementsN (viralloc.c:436) ==26535== by 0x55DB011: virNWFilterObjListAssignDef (virnwfilterobj.c:362) ==26535== by 0x55DB530: virNWFilterObjListLoadConfig (virnwfilterobj.c:503) ==26535== by 0x55DB635: virNWFilterObjListLoadAllConfigs (virnwfilterobj.c:539) ==26535== by 0x2AC5A28B: nwfilterStateInitialize (nwfilter_driver.c:250) ==26535== by 0x5621C64: virStateInitialize (libvirt.c:770) ==26535== by 0x124379: daemonRunStateInit (libvirtd.c:881) ==26535== by 0x554AC78: virThreadHelper (virthread.c:206) ==26535== by 0x8F5F493: start_thread (in /lib64/libpthread-2.23.so) Signed-off-by: Michal Privoznik Reviewed-by: John Ferlan --- diff --git a/src/conf/virnwfilterobj.c b/src/conf/virnwfilterobj.c index c69407a..b5aaa6b 100644 --- a/src/conf/virnwfilterobj.c +++ b/src/conf/virnwfilterobj.c @@ -110,6 +110,7 @@ virNWFilterObjListFree(virNWFilterObjListPtr nwfilters) size_t i; for (i = 0; i < nwfilters->count; i++) virNWFilterObjFree(nwfilters->objs[i]); + VIR_FREE(nwfilters->objs); VIR_FREE(nwfilters); }