From b7a443fcbb009fc89904bdc86b2457ec6f65ee53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A1n=20Tomko?= Date: Thu, 3 Jan 2013 19:07:55 +0100 Subject: [PATCH] qemu: fix a segfault in qemuProcessWaitForMonitor Commit b3f2b4ca5cfe98b08ffdb96f0455e3e333e5ace6 left buf unallocated in the case of QMP capability probing being used, leading to a segfault in strlen in the cleanup path. This patch opens the log and allocates the buffer if QMP probing was used, so we can display the helpful error message. --- src/qemu/qemu_process.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 358757b3b8..2d63cf2dfa 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -1709,6 +1709,15 @@ cleanup: if (pos != -1 && kill(vm->pid, 0) == -1 && errno == ESRCH) { /* VM is dead, any other error raised in the interim is probably * not as important as the qemu cmdline output */ + if (qemuCapsUsedQMP(caps)) { + if ((logfd = qemuDomainOpenLog(driver, vm, pos)) < 0) + return -1; + + if (VIR_ALLOC_N(buf, buf_size) < 0) { + virReportOOMError(); + goto closelog; + } + } qemuProcessReadLogFD(logfd, buf, buf_size, strlen(buf)); virReportError(VIR_ERR_INTERNAL_ERROR, _("process exited while connecting to monitor: %s"), -- GitLab