mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-20 09:58:15 +03: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:
parent
c0790e3a09
commit
ffac10c971
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user