From: Wangyufei (James) Date: Tue, 3 Dec 2013 02:59:00 +0000 (+0000) Subject: qemuAgentDispose: Reset lastError X-Git-Tag: CVE-2013-6436~121 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=36ae35f02ce1e6588072b09cd8bf4ed9a05d25e1;p=thirdparty%2Flibvirt.git qemuAgentDispose: Reset lastError When an error occurred in qemuAgentIO, it will be saved in mon->lastError, but it will not be freed at the end. Present since commit c160ce33; and compare to commit 9cc8a5af fixing the same problem in qemu_monitor.c. ==22219== 54 bytes in 1 blocks are definitely lost in loss record 982 of 1,379 ==22219== at 0x4C26B9B: malloc (vg_replace_malloc.c:263) ==22219== by 0x8520521: strdup (in /lib64/libc-2.11.3.so) ==22219== by 0x52E99CB: virStrdup (virstring.c:554) ==22219== by 0x52B44C4: virCopyError (virerror.c:195) ==22219== by 0x52B5123: virCopyLastError (virerror.c:312) ==22219== by 0x10905877: qemuAgentIO (qemu_agent.c:660) ==22219== by 0x52B6122: virEventPollDispatchHandles (vireventpoll.c:501) ==22219== by 0x52B7AEA: virEventPollRunOnce (vireventpoll.c:647) ==22219== by 0x52B5C1B: virEventRunDefaultImpl (virevent.c:274) ==22219== by 0x54181FD: virNetServerRun (virnetserver.c:1112) ==22219== by 0x11EF4D: main (libvirtd.c:1513) Signed-off-by: Zhou Yimin Signed-off-by: Eric Blake --- diff --git a/src/qemu/qemu_agent.c b/src/qemu/qemu_agent.c index 2cd0ccc709..4a3820cef5 100644 --- a/src/qemu/qemu_agent.c +++ b/src/qemu/qemu_agent.c @@ -161,6 +161,7 @@ static void qemuAgentDispose(void *obj) (mon->cb->destroy)(mon, mon->vm); virCondDestroy(&mon->notify); VIR_FREE(mon->buffer); + virResetError(&mon->lastError); } static int