From: Jim Meyering Date: Mon, 25 Jan 2010 19:19:01 +0000 (+0100) Subject: qemuMonitorTextAttachDrive: avoid two leaks X-Git-Tag: v0.7.6~57 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1af75828a07714fce7ccae14920457ea9c9aa6e8;p=thirdparty%2Flibvirt.git qemuMonitorTextAttachDrive: avoid two leaks * src/qemu/qemu_monitor_text.c (qemuMonitorTextAttachDrive): Most other failures in this function would "goto cleanup", but one mistakenly returned directly, skipping the cleanup and resulting in a leak. In addition, iterating the "try_command" loop would clobber, and thus leak, the "cmd" allocated on the first iteration, so be careful to free it in addition to "reply" beforehand. --- diff --git a/src/qemu/qemu_monitor_text.c b/src/qemu/qemu_monitor_text.c index ce5349bd71..380bcdc116 100644 --- a/src/qemu/qemu_monitor_text.c +++ b/src/qemu/qemu_monitor_text.c @@ -1881,13 +1881,13 @@ try_command: if (qemudParseDriveAddReply(reply, driveAddr) < 0) { if (!tryOldSyntax && strstr(reply, "invalid char in expression")) { VIR_FREE(reply); + VIR_FREE(cmd); tryOldSyntax = 1; goto try_command; } qemudReportError (NULL, NULL, NULL, VIR_ERR_OPERATION_FAILED, _("adding %s disk failed: %s"), drivestr, reply); - VIR_FREE(reply); - return -1; + goto cleanup; } ret = 0;