--- qemu/block-cow.c.orig Tue Mar 29 12:12:18 2005 +++ qemu/block-cow.c Tue Mar 29 12:30:25 2005 @@ -162,6 +162,9 @@ int nb_sectors, int *pnum) { BDRVCowState *s = bs->opaque; + if (s->cow_bitmap_size <= (sector_num + nb_sectors) / 8) { + nb_sectors = (((int64_t) s->cow_bitmap_size) * 8) - sector_num; + } return is_changed(s->cow_bitmap, sector_num, nb_sectors, pnum); } @@ -170,6 +173,10 @@ { BDRVCowState *s = bs->opaque; int ret, n; + + if (s->cow_bitmap_size <= (sector_num + nb_sectors) / 8) { + nb_sectors = (((int64_t) s->cow_bitmap_size) * 8) - sector_num; + } while (nb_sectors > 0) { if (is_changed(s->cow_bitmap, sector_num, nb_sectors, &n)) {