[libvirt] [PATCH] adminDaemonListServers: Don't leak @srv_names array

Erik Skultety eskultet at redhat.com
Mon Feb 22 07:59:55 UTC 2016


On 22/02/16 08:57, Michal Privoznik wrote:
> When getting a list of servers registered for a daemon, it's
> returned as a dynamically allocated array filled in with pointers
> to constant strings. Because the array is dynamic, it should be
> freed when no longer needed (but not the strings!). Even the
> function that creates the array suggests that.
> 
> ==19446== 48 bytes in 3 blocks are definitely lost in loss record 821 of 1,034
> ==19446==    at 0x4C2C28E: realloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==19446==    by 0x54BAFC8: virReallocN (viralloc.c:245)
> ==19446==    by 0x54BB0BE: virExpandN (viralloc.c:294)
> ==19446==    by 0x54BB391: virInsertElementsN (viralloc.c:436)
> ==19446==    by 0x164E3D: virNetDaemonGetServerNames (virnetdaemon.c:217)
> ==19446==    by 0x15616F: adminDaemonListServers (admin_server.c:52)
> ==19446==    by 0x155B8C: adminDispatchConnectListServers (admin.c:151)
> ==19446==    by 0x155FD8: adminDispatchConnectListServersHelper (admin_dispatch.h:101)
> ==19446==    by 0x568E862: virNetServerProgramDispatchCall (virnetserverprogram.c:437)
> ==19446==    by 0x568E3C3: virNetServerProgramDispatch (virnetserverprogram.c:307)
> ==19446==    by 0x5687B5B: virNetServerProcessMsg (virnetserver.c:135)
> ==19446==    by 0x5687C1B: virNetServerHandleJob (virnetserver.c:156)
> 
> Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
> ---
>  daemon/admin_server.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/daemon/admin_server.c b/daemon/admin_server.c
> index 7521e82..0196bfe 100644
> --- a/daemon/admin_server.c
> +++ b/daemon/admin_server.c
> @@ -68,6 +68,7 @@ adminDaemonListServers(virNetDaemonPtr dmn,
>      ret = nsrvs;
>  
>   cleanup:
> +    VIR_FREE(srv_names);
>      virObjectListFree(srvs);
>      return ret;
>  }
> 

ACK

Erik




More information about the libvir-list mailing list