Commit ecbe1576 authored by Blue Swirl's avatar Blue Swirl
Browse files

block/bochs: improve format checking



Signed-off-by: default avatarBlue Swirl <blauwirbel@gmail.com>
parent 114cdfa9
Loading
Loading
Loading
Loading
+10 −3
Original line number Diff line number Diff line
@@ -146,7 +146,9 @@ static int bochs_open(BlockDriverState *bs, const char *filename, int flags)
      bs->total_sectors = le64_to_cpu(bochs.extra.redolog.disk) / 512;
    }

    lseek(s->fd, le32_to_cpu(bochs.header), SEEK_SET);
    if (lseek(s->fd, le32_to_cpu(bochs.header), SEEK_SET) == (off_t)-1) {
        goto fail;
    }

    s->catalog_size = le32_to_cpu(bochs.extra.redolog.catalog);
    s->catalog_bitmap = qemu_malloc(s->catalog_size * 4);
@@ -197,7 +199,10 @@ static inline int seek_to_sector(BlockDriverState *bs, int64_t sector_num)
//	bitmap_offset, block_offset);

    // read in bitmap for current extent
    lseek(s->fd, bitmap_offset + (extent_offset / 8), SEEK_SET);
    if (lseek(s->fd, bitmap_offset + (extent_offset / 8), SEEK_SET) ==
        (off_t)-1) {
        return -1;
    }

    if (read(s->fd, &bitmap_entry, 1) != 1)
        return -1;
@@ -209,7 +214,9 @@ static inline int seek_to_sector(BlockDriverState *bs, int64_t sector_num)
	return -1; // not allocated
    }

    lseek(s->fd, block_offset, SEEK_SET);
    if (lseek(s->fd, block_offset, SEEK_SET) == (off_t)-1) {
        return -1;
    }

    return 0;
}