mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
Fix leak of JSON object for events
The event handler functions do not free the virJSONValuePtr object. Every event received from a VM thus caused a memory leak * src/qemu/qemu_monitor_json.c: Fix leak of event object
This commit is contained in:
parent
09a882bd4d
commit
5ab8746f69
@ -122,7 +122,6 @@ qemuMonitorJSONIOProcessLine(qemuMonitorPtr mon,
|
|||||||
|
|
||||||
if (virJSONValueObjectHasKey(obj, "QMP") == 1) {
|
if (virJSONValueObjectHasKey(obj, "QMP") == 1) {
|
||||||
ret = 0;
|
ret = 0;
|
||||||
virJSONValueFree(obj);
|
|
||||||
} else if (virJSONValueObjectHasKey(obj, "event") == 1) {
|
} else if (virJSONValueObjectHasKey(obj, "event") == 1) {
|
||||||
ret = qemuMonitorJSONIOProcessEvent(mon, obj);
|
ret = qemuMonitorJSONIOProcessEvent(mon, obj);
|
||||||
} else if (virJSONValueObjectHasKey(obj, "error") == 1 ||
|
} else if (virJSONValueObjectHasKey(obj, "error") == 1 ||
|
||||||
@ -130,6 +129,7 @@ qemuMonitorJSONIOProcessLine(qemuMonitorPtr mon,
|
|||||||
if (msg) {
|
if (msg) {
|
||||||
msg->rxObject = obj;
|
msg->rxObject = obj;
|
||||||
msg->finished = 1;
|
msg->finished = 1;
|
||||||
|
obj = NULL;
|
||||||
ret = 0;
|
ret = 0;
|
||||||
} else {
|
} else {
|
||||||
qemuReportError(VIR_ERR_INTERNAL_ERROR,
|
qemuReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
@ -141,8 +141,7 @@ qemuMonitorJSONIOProcessLine(qemuMonitorPtr mon,
|
|||||||
}
|
}
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
if (ret < 0)
|
virJSONValueFree(obj);
|
||||||
virJSONValueFree(obj);
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user