]> xenbits.xensource.com Git - libvirt.git/commitdiff
adminDaemonListServers: Don't leak @srv_names array
authorMichal Privoznik <mprivozn@redhat.com>
Mon, 22 Feb 2016 06:25:18 +0000 (07:25 +0100)
committerMichal Privoznik <mprivozn@redhat.com>
Mon, 22 Feb 2016 06:25:18 +0000 (07:25 +0100)
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@redhat.com>
daemon/admin_server.c

index 7521e822c2b5758526f417ca03c3083631b142bb..0196bfe8d47d522e6ef01afa8543318f92fa8a16 100644 (file)
@@ -68,6 +68,7 @@ adminDaemonListServers(virNetDaemonPtr dmn,
     ret = nsrvs;
 
  cleanup:
+    VIR_FREE(srv_names);
     virObjectListFree(srvs);
     return ret;
 }