summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Wu <peter@lekensteyn.nl>2014-12-26 13:16:48 +0100
committerPeter Wu <peter@lekensteyn.nl>2014-12-26 22:30:28 +0100
commit34df3eaebbf503a1eda6a6d64b5dbdf57475c517 (patch)
tree1a913903459c353fa27a3969e2fa00231fdbc257
parent90109c2d96f60441552bdbf8e68cf0f3f7d1f5f1 (diff)
downloadqemu-34df3eaebbf503a1eda6a6d64b5dbdf57475c517.tar.gz
block/dmg: validate chunk size to avoid overflow
Previously the chunk size was not checked, allowing for a large memory allocation. This patch checks whether the chunks size is within the resource fork length. Signed-off-by: Peter Wu <peter@lekensteyn.nl>
-rw-r--r--block/dmg.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/block/dmg.c b/block/dmg.c
index 75e771af40..19e4fe2b19 100644
--- a/block/dmg.c
+++ b/block/dmg.c
@@ -308,7 +308,7 @@ static int dmg_read_resource_fork(BlockDriverState *bs, DmgHeaderState *ds,
ret = read_uint32(bs, offset, &count);
if (ret < 0) {
goto fail;
- } else if (count == 0) {
+ } else if (count == 0 || count > info_end - offset) {
ret = -EINVAL;
goto fail;
}