From: Eric Blake Date: Fri, 16 Dec 2011 00:28:18 +0000 (-0700) Subject: qemu: detect truncated file as invalid save image X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=d99fe011a2bbf3b42f482edb7c86c60b4f8ccd09;p=libvirt.git qemu: detect truncated file as invalid save image If managed save fails at the right point in time, then the save image can end up with 0 bytes in length (no valid header), and our attempts in commit 55d88def to detect and skip invalid save files missed this case. * src/qemu/qemu_driver.c (qemuDomainSaveImageOpen): Also unlink empty file as corrupt. Reported by Dennis Householder. --- diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 725b5930df..0d99ce4c2f 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -3852,6 +3852,15 @@ qemuDomainSaveImageOpen(struct qemud_driver *driver, goto error; if (saferead(fd, &header, sizeof(header)) != sizeof(header)) { + if (unlink_corrupt) { + if (VIR_CLOSE(fd) < 0 || unlink(path) < 0) { + virReportSystemError(errno, + _("cannot remove corrupt file: %s"), + path); + goto error; + } + return -3; + } qemuReportError(VIR_ERR_OPERATION_FAILED, "%s", _("failed to read qemu header")); goto error;