[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PATCH] block/parallels.c: avoid integer overflow in alloca
From: |
Peter Maydell |
Subject: |
[Qemu-block] [PATCH] block/parallels.c: avoid integer overflow in allocate_clusters() |
Date: |
Fri, 31 Mar 2017 14:13:00 +0100 |
Coverity (CID 1307776) points out that in the multiply:
space = to_allocate * s->tracks;
we are trying to calculate a 64 bit result but the types
of to_allocate and s->tracks mean that we actually calculate
a 32 bit result. Add an explicit cast to force a 64 bit
multiply.
Signed-off-by: Peter Maydell <address@hidden>
---
NB: compile-and-make-check tested only...
---
block/parallels.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/block/parallels.c b/block/parallels.c
index 4173b3f..3886c30 100644
--- a/block/parallels.c
+++ b/block/parallels.c
@@ -206,7 +206,7 @@ static int64_t allocate_clusters(BlockDriverState *bs,
int64_t sector_num,
}
to_allocate = DIV_ROUND_UP(sector_num + *pnum, s->tracks) - idx;
- space = to_allocate * s->tracks;
+ space = (int64_t)to_allocate * s->tracks;
if (s->data_end + space > bdrv_getlength(bs->file->bs) >>
BDRV_SECTOR_BITS) {
int ret;
space += s->prealloc_size;
--
2.7.4