Commit cc60e327 authored by Kevin Wolf's avatar Kevin Wolf
Browse files

qemu-img rebase: Fix output image corruption



qemu-img rebase must always give clusters in the COW file priority over those
in the backing file. As it failed to use number of non-allocated clusters but
assumed the maximum, it was possible that allocated clusters were taken from
the backing file instead, leading to a corrupted output image.

Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
parent 294cc35f
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -1136,7 +1136,7 @@ static int img_rebase(int argc, char **argv)
    if (!unsafe) {
        uint64_t num_sectors;
        uint64_t sector;
        int n, n1;
        int n;
        uint8_t * buf_old;
        uint8_t * buf_new;

@@ -1155,8 +1155,8 @@ static int img_rebase(int argc, char **argv)
            }

            /* If the cluster is allocated, we don't need to take action */
            if (bdrv_is_allocated(bs, sector, n, &n1)) {
                n = n1;
            ret = bdrv_is_allocated(bs, sector, n, &n);
            if (ret) {
                continue;
            }