[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