[libvirt] [PATCH] virNWFilterObjListFree: Don't leak nwfilters->objs

Michal Privoznik posted 1 patch 6 years, 11 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/86805d119e02ee153d991c0295a0a50d37b6f359.1493912529.git.mprivozn@redhat.com
src/conf/virnwfilterobj.c | 1 +
1 file changed, 1 insertion(+)
[libvirt] [PATCH] virNWFilterObjListFree: Don't leak nwfilters->objs
Posted by Michal Privoznik 6 years, 11 months ago
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 <mprivozn@redhat.com>
---
 src/conf/virnwfilterobj.c | 1 +
 1 file changed, 1 insertion(+)

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);
 }
 
-- 
2.10.2

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH] virNWFilterObjListFree: Don't leak nwfilters->objs
Posted by John Ferlan 6 years, 11 months ago

On 05/04/2017 11:42 AM, Michal Privoznik wrote:
> 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 <mprivozn@redhat.com>
> ---
>  src/conf/virnwfilterobj.c | 1 +
>  1 file changed, 1 insertion(+)
> 

<sigh>  ACK, safe,

John

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list