libvirt/examples
Michal Privoznik 498d7b2bf5 domtop: Properly free cpu status
So, in the example the cpu stats are collected within a function
called do_top. At the beginning of the function we ask the daemon for
how much vCPUs can we get stats, and how many stats for a vCPU can we
get. This is because it's how our API works - users are required to
preallocate a chunk of memory for the results. Now, at the end, we try
to free the allocated array, but we are not doing it correctly.
There's this virTypedParamsFree() function which gets a pointer to the
array and the length of the array. However, if there was an error in
getting vCPU stats we pass a negative number instead of the originally
computed value. This flaw results in SIGSEGV:

libvirt: QEMU Driver error : Requested operation is not valid: domain is not running
ERROR do_top:333 : Unable to get cpu stats
==29201== Invalid read of size 4
==29201==    at 0x4F1DF8B: virTypedParamsClear (virtypedparam.c:1145)
==29201==    by 0x4F1DFEB: virTypedParamsFree (virtypedparam.c:1165)
==29201==    by 0x4023C3: do_top (domtop.c:349)
==29201==    by 0x40260B: main (domtop.c:386)
==29201==  Address 0x131cd7c0 is 16 bytes after a block of size 768 alloc'd
==29201==    at 0x4C2C070: calloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==29201==    by 0x401FF1: do_top (domtop.c:295)
==29201==    by 0x40260B: main (domtop.c:386)

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
2015-04-21 10:56:50 +02:00
..
apparmor Apparmor: removed duplicate nscd rules 2015-04-20 09:32:04 +02:00
dominfo Indent top-level labels by one space in examples/ 2014-03-25 14:58:38 +01:00
dommigrate Add a new example to illustrate domain migration 2014-04-30 14:29:07 +01:00
domsuspend Indent top-level labels by one space in examples/ 2014-03-25 14:58:38 +01:00
domtop domtop: Properly free cpu status 2015-04-21 10:56:50 +02:00
hellolibvirt Indent top-level labels by one space in examples/ 2014-03-25 14:58:38 +01:00
lxcconvert virt-lxc-convert: make free return values in bytes 2014-07-07 12:37:23 +02:00
object-events Add an example for EVENT_ID_DEVICE_ADDED 2015-04-15 17:06:01 +02:00
openauth Remove unnecessary curly brackets in daemon/ and examples/ 2014-11-14 17:13:00 +01:00
systemtap Fix common misspellings 2015-03-23 09:01:30 +01:00
xml examples: test: Kill unsupported maxMemory element 2014-08-20 15:27:18 +02:00