mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
qemu: Avoid memleak on failure to format blockjobs
virXMLFormatElement() frees attrBuf on success, but not necessarily on failure. Most other callers of this function take the time to reset attrBuf afterwords, but qemuDomainObjPrivateXMLFormatBlockjobs() was relying on it succeeding, and could thus result in a memory leak. Signed-off-by: Eric Blake <eblake@redhat.com> ACKed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
@@ -2232,11 +2232,14 @@ qemuDomainObjPrivateXMLFormatBlockjobs(virBufferPtr buf,
|
||||
{
|
||||
virBuffer attrBuf = VIR_BUFFER_INITIALIZER;
|
||||
bool bj = qemuDomainHasBlockjob(vm, false);
|
||||
int ret;
|
||||
|
||||
virBufferAsprintf(&attrBuf, " active='%s'",
|
||||
virTristateBoolTypeToString(virTristateBoolFromBool(bj)));
|
||||
|
||||
return virXMLFormatElement(buf, "blockjobs", &attrBuf, NULL);
|
||||
ret = virXMLFormatElement(buf, "blockjobs", &attrBuf, NULL);
|
||||
virBufferFreeAndReset(&attrBuf);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user