Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
inspection: Fix double-free when certain guest files are empty.
The following commit: commit 5a3da36 Author: Richard W.M. Jones <rjones@redhat.com> Date: Thu Jan 24 17:07:38 2013 +0000 inspect: Use CLEANUP_* macros in inspection code. can cause a double-free along an error path when certain guest files are empty where we expected those files to contain at least one line. This causes virt-inspector to crash when run on these guests. The following is a test case which demonstrates the crash. `f20rawhidex64' is a Fedora guest, but with small adjustments to the test you could use any Linux guest for this test. $ qemu-img create -f qcow2 -b f20rawhidex64 /tmp/test.qcow2 Formatting '/tmp/test.qcow2', fmt=qcow2 size=21474836480 backing_file='f20rawhidex64' encryption=off cluster_size=65536 lazy_refcounts=off $ guestfish -i -a /tmp/test.qcow2 -- rm /etc/redhat-release : touch /etc/redhat-release $ virt-inspector /tmp/test.qcow2 *** glibc detected *** virt-inspector: double free or corruption (fasttop): 0x00007f18bc9925a0 *** ======= Backtrace: ========= /lib64/libc.so.6(+0x34ecc7ca8e)[0x7f18b8e64a8e] /lib64/libguestfs.so.0(+0x3f91898078)[0x7f18ba13c078] /lib64/libguestfs.so.0(+0x3f91899761)[0x7f18ba13d761] /lib64/libguestfs.so.0(+0x3f91896d12)[0x7f18ba13ad12] /lib64/libguestfs.so.0(+0x3f91894140)[0x7f18ba138140] /lib64/libguestfs.so.0(guestfs_inspect_os+0x35)[0x7f18ba0bcc35] virt-inspector(main+0x547)[0x7f18ba7c57d7] /lib64/libc.so.6(__libc_start_main+0xf5)[0x7f18b8e09a05] virt-inspector(+0x6665)[0x7f18ba7c7665] This is a denial of service, but not likely to be exploitable. (Found by Coverity)
- Loading branch information
Wouldn't a simpler fix be just to stop calling
guestfs___free_string_list? Since lines[0] == NULL, all it does isfree(lines).