]> git.ipfire.org Git - thirdparty/libvirt.git/commit
ch: Avoid memory leak in virCHProcessEvents()
authorMichal Privoznik <mprivozn@redhat.com>
Wed, 10 Sep 2025 08:21:48 +0000 (10:21 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Thu, 11 Sep 2025 14:31:11 +0000 (16:31 +0200)
commitcd00c706955c80bea47b143d5619b11b1399c108
tree51ce4099b576f40e19aafcd7f79a42a57bc91c49
parent39a0374d13ce1d2d52dcb50f968b2fedb967413b
ch: Avoid memory leak in virCHProcessEvents()

The aim of virCHProcessEvents() is to read data (in JSON format)
from CH monitor and then process them. To parse incoming data
virJSONValueFromString() is used. But the corresponding
virJSONValue is freed only when processing of an even succeeds.
If processing an event fails, then the memory is not freed
leading to a memory leak.

334 (24 direct, 310 indirect) bytes in 1 blocks are definitely lost in loss record 1,975 of 2,040
   at 0x4919EF3: calloc (vg_replace_malloc.c:1675)
   by 0x4FEB249: g_malloc0 (in /usr/lib64/libglib-2.0.so.0.8400.3)
   by 0x4A66162: virJSONValueNewObject (virjson.c:533)
   by 0x4A67E74: virJSONValueFromJsonC (virjson.c:1413)
   by 0x4A681A5: virJSONValueFromString (virjson.c:1484)
   by 0xB8CD9D7: virCHProcessEvents (ch_events.c:179)
   by 0xB8CDCDC: virCHReadProcessEvents (ch_events.c:251)
   by 0xB8CDEBB: virCHEventHandlerLoop (ch_events.c:284)
   by 0x4AC1EB4: virThreadHelper (virthread.c:256)
   by 0x5441DE3: start_thread (in /usr/lib64/libc.so.6)
   by 0x54C25F3: clone (in /usr/lib64/libc.so.6)

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/ch/ch_events.c