]> xenbits.xensource.com Git - libvirt.git/commitdiff
virsh: Don't leak disk targets in cmdDomBlkError
authorMichal Privoznik <mprivozn@redhat.com>
Mon, 13 May 2019 12:32:06 +0000 (14:32 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Mon, 13 May 2019 12:34:11 +0000 (14:34 +0200)
The virDomainGetDiskErrors() API copies disk targets into @disks
array that we allocate. But we forgot to free it:

==140828== 16 bytes in 4 blocks are definitely lost in loss record 41 of 242
==140828==    at 0x4C2F08F: malloc (vg_replace_malloc.c:299)
==140828==    by 0x8C406D9: strdup (in /lib64/libc-2.28.so)
==140828==    by 0x5377DD3: virStrdup (virstring.c:966)
==140828==    by 0x54C112F: testDomainGetDiskErrors (test_driver.c:3068)
==140828==    by 0x55C863D: virDomainGetDiskErrors (libvirt-domain.c:10988)
==140828==    by 0x15D1FA: cmdDomBlkError (virsh-domain-monitor.c:1215)
==140828==    by 0x17F1A8: vshCommandRun (vsh.c:1335)
==140828==    by 0x13489E: main (virsh.c:920)

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
tools/virsh-domain-monitor.c

index d87475f6f6d9ff67ffd56b8742a31fddee0db3c5..d2b7e5a0597f0f24e5c4f70db6d6e85970d250b8 100644 (file)
@@ -1229,6 +1229,8 @@ cmdDomBlkError(vshControl *ctl, const vshCmd *cmd)
     ret = true;
 
  cleanup:
+    for (i = 0; i < count; i++)
+        VIR_FREE(disks[i].disk);
     VIR_FREE(disks);
     virshDomainFree(dom);
     return ret;