libvirt/tools
Alex Jia 6152c74595 virsh: Plug memory leak on cmdUndefine
Detected by valgrind. Leak is introduced in commit 3bb6bcf.

Free 'vol' memory before allocating memory, the codes will miss one time
free when 'vol_i = nvolumes' in for loop, so plug memory leak.

* tools/virsh.c: fix memory leak on cmdUndefine.

* How to reproduce?
% dd if=/dev/null of=/var/lib/libvirt/images/foo bs=1 count=1 seek=10M
% virsh define foo.xml                   (disk source file points to '/var/lib/libvirt/images/foo')
% virsh vol-clone foo foo-clone default  (the original guest name is 'foo')
% virsh pool-refresh default
% virsh vol-list default                 (make sure 'foo-clone' volume exists)
% virsh define foo-clone.xml             (disk source file points to '/var/lib/libvirt/images/foo-clone')
% valgrind -v --leak-check=full virsh undefine foo-clone --remove-all-storage

* Actual results:

1. virsh output
Domain foo-clone has been undefined
Volume '/var/lib/libvirt/images/foo-clone' removed.

error: Failed to disconnect from the hypervisor, 1 leaked reference(s)

2. valgrind result

==6515== 92 (40 direct, 52 indirect) bytes in 1 blocks are definitely lost in loss record 46 of 69
==6515==    at 0x4A04A28: calloc (vg_replace_malloc.c:467)
==6515==    by 0x4C89B71: virAlloc (memory.c:101)
==6515==    by 0x4CFCACE: virGetStorageVol (datatypes.c:724)
==6515==    by 0x4D4A8E0: remoteStorageVolLookupByPath (remote_driver.c:4664)
==6515==    by 0x4D07153: virStorageVolLookupByPath (libvirt.c:12508)
==6515==    by 0x4270E6: cmdUndefine (virsh.c:2828)
==6515==    by 0x4151B6: vshCommandRun (virsh.c:17693)
==6515==    by 0x4264D3: main (virsh.c:19270)
==6515==
==6515== LEAK SUMMARY:
==6515==    definitely lost: 40 bytes in 1 blocks

RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=786674

Signed-off-by: Alex Jia <ajia@redhat.com>
2012-02-02 11:41:40 +01:00
..
.gitignore Support automatic creation of leases for disks in sanlock 2011-06-28 18:18:06 +01:00
console.c console: plug memory leaks 2011-12-20 13:36:45 -07:00
console.h virsh: Allow other escape characters for console 2011-12-01 09:51:25 +01:00
libvirt_win_icon_16x16.ico
libvirt_win_icon_32x32.ico
libvirt_win_icon_48x48.ico
libvirt_win_icon_64x64.ico
libvirt-guests.init.sh save: support bypass-cache flag in libvirt-guests init script 2011-07-21 16:24:09 -06:00
libvirt-guests.service.in Add support for systemd init service 2011-11-18 16:16:02 +00:00
libvirt-guests.sysconf save: support bypass-cache flag in libvirt-guests init script 2011-07-21 16:24:09 -06:00
Makefile.am Add a virt-host-validate command to sanity check HV config 2012-01-27 17:53:18 +00:00
virsh_win_icon.rc
virsh.c virsh: Plug memory leak on cmdUndefine 2012-02-02 11:41:40 +01:00
virsh.pod virsh: Add support for modifying domain description and titles 2012-02-01 15:12:53 -07:00
virt-host-validate-common.c Add a virt-host-validate command to sanity check HV config 2012-01-27 17:53:18 +00:00
virt-host-validate-common.h Add a virt-host-validate command to sanity check HV config 2012-01-27 17:53:18 +00:00
virt-host-validate-lxc.c Add a virt-host-validate command to sanity check HV config 2012-01-27 17:53:18 +00:00
virt-host-validate-lxc.h Add a virt-host-validate command to sanity check HV config 2012-01-27 17:53:18 +00:00
virt-host-validate-qemu.c Add a virt-host-validate command to sanity check HV config 2012-01-27 17:53:18 +00:00
virt-host-validate-qemu.h Add a virt-host-validate command to sanity check HV config 2012-01-27 17:53:18 +00:00
virt-host-validate.c build: fix missing include 2012-01-27 11:18:35 -07:00
virt-pki-validate.in virt-*-validate.in: quote all variable references 2011-02-21 10:32:34 -07:00
virt-sanlock-cleanup.in Fix virt-sanlock-cleanup documentation 2011-10-17 10:57:36 -06:00
virt-xml-validate.in virt-*-validate.in: quote all variable references 2011-02-21 10:32:34 -07:00