From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1OA6D7-0001V1-8U for qemu-devel@nongnu.org; Thu, 06 May 2010 14:54:13 -0400 Received: from [140.186.70.92] (port=55984 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OA6D1-0001Oc-Lp for qemu-devel@nongnu.org; Thu, 06 May 2010 14:54:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OA6Cw-0004EN-0S for qemu-devel@nongnu.org; Thu, 06 May 2010 14:54:07 -0400 Received: from moutng.kundenserver.de ([212.227.126.186]:49371) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OA6Cv-0004EB-Lr for qemu-devel@nongnu.org; Thu, 06 May 2010 14:54:01 -0400 From: Stefan Weil Date: Thu, 6 May 2010 20:53:47 +0200 Message-Id: <1273172027-20819-1-git-send-email-weil@mail.berlios.de> Subject: [Qemu-devel] [PATCH] block/vdi: Allow disk images of size 0 List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: QEMU Developers Cc: Kevin Wolf 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 Signed-off-by: Stefan Weil --- block/vdi.c | 9 +++++++-- 1 files changed, 7 insertions(+), 2 deletions(-) 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; -- 1.7.0