| Submitter | Stefan Weil |
|---|---|
| Date | May 6, 2010, 6:53 p.m. |
| Message ID | <1273172027-20819-1-git-send-email-weil@mail.berlios.de> |
| Download | mbox | patch |
| Permalink | /patch/51865/ |
| State | New |
| Headers | show |
Comments
Am 06.05.2010 20:53, schrieb Stefan Weil: > Even it is not very useful, users may create images of size 0. > > Without the special option CONFIG_ZERO_MALLOC, qemu_mallocz > aborts execution when it is told to allocate 0 bytes, > so avoid this kind of call. > > Cc: Kevin Wolf <kwolf@redhat.com> > Signed-off-by: Stefan Weil <weil@mail.berlios.de> This stupid qemu_malloc behaviour only ever introduces bugs instead of avoiding them... *sigh* Thanks, applied to the block branch. Kevin
Patch
diff --git a/block/vdi.c b/block/vdi.c index 2213819..02b9fea 100644 --- a/block/vdi.c +++ b/block/vdi.c @@ -435,7 +435,9 @@ static int vdi_open(BlockDriverState *bs, int flags) bmap_size = header.blocks_in_image * sizeof(uint32_t); bmap_size = (bmap_size + SECTOR_SIZE - 1) / SECTOR_SIZE; - s->bmap = qemu_malloc(bmap_size * SECTOR_SIZE); + if (bmap_size > 0) { + s->bmap = qemu_malloc(bmap_size * SECTOR_SIZE); + } if (bdrv_read(bs->file, s->bmap_sector, (uint8_t *)s->bmap, bmap_size) < 0) { goto fail_free_bmap; } @@ -860,7 +862,10 @@ static int vdi_create(const char *filename, QEMUOptionParameter *options) result = -errno; } - bmap = (uint32_t *)qemu_mallocz(bmap_size); + bmap = NULL; + if (bmap_size > 0) { + bmap = (uint32_t *)qemu_mallocz(bmap_size); + } for (i = 0; i < blocks; i++) { if (image_type == VDI_TYPE_STATIC) { bmap[i] = i;
Even it is not very useful, users may create images of size 0. Without the special option CONFIG_ZERO_MALLOC, qemu_mallocz aborts execution when it is told to allocate 0 bytes, so avoid this kind of call. Cc: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Stefan Weil <weil@mail.berlios.de> --- block/vdi.c | 9 +++++++-- 1 files changed, 7 insertions(+), 2 deletions(-)