On 10/18/2018 10:42 PM, Eric Blake wrote: > On 10/18/18 3:08 PM, Eric Blake wrote: >> 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@xxxxxxxxxx> >> --- >> src/qemu/qemu_domain.c | 6 +++++- >> 1 file changed, 5 insertions(+), 1 deletion(-) >> >> diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c >> index dd67be5e2a..ad7a6fe136 100644 >> --- a/src/qemu/qemu_domain.c >> +++ b/src/qemu/qemu_domain.c >> @@ -2232,11 +2232,15 @@ >> qemuDomainObjPrivateXMLFormatBlockjobs(virBufferPtr buf, >> { >> virBuffer attrBuf = VIR_BUFFER_INITIALIZER; >> bool bj = qemuDomainHasBlockjob(vm, false); >> + ret = -1; > > I need to quit editing patches in my mailer. As written, this obviously > doesn't compile; s/ret/int ret/ > >> >> virBufferAsprintf(&attrBuf, " active='%s'", >> >> virTristateBoolTypeToString(virTristateBoolFromBool(bj))); >> >> - return virXMLFormatElement(buf, "blockjobs", &attrBuf, NULL); >> + ret = virXMLFormatElement(buf, "blockjobs", &attrBuf, NULL); >> + cleanup: > > and this label is unused. > >> + virBufferFreeAndReset(&attrBuf); >> + return ret; >> } >> >> > ACK with those cleanups squashed in. Michal -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list