[libvirt] [PATCH] qemu: detect truncated file as invalid save image

Osier Yang jyang at redhat.com
Fri Dec 16 03:37:06 UTC 2011


On 2011年12月16日 08:42, Eric Blake wrote:
> 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.
> ---
>   src/qemu/qemu_driver.c |    9 +++++++++
>   1 files changed, 9 insertions(+), 0 deletions(-)
>
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index 725b593..0d99ce4 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;


ACK




More information about the libvir-list mailing list