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

Michal Privoznik mprivozn at redhat.com
Mon Feb 22 07:57:18 UTC 2016

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;
+    VIR_FREE(srv_names);
     return ret;

More information about the libvir-list mailing list