From fd29b4bbef9f75bba64ad7c4db38babc397a4814 Mon Sep 17 00:00:00 2001 From: Kevin Wolf Date: Wed, 22 Feb 2012 12:31:47 +0100 Subject: qcow2: Fix offset in qcow2_read_extensions The spec says that the length of extensions is padded to 8 bytes, not the offset. Currently this is the same because the header size is a multiple of 8, so this is only about compatibility with future changes to the header size. While touching it, move the calculation to a common place instead of duplicating it for each header extension type. Signed-off-by: Kevin Wolf Reviewed-by: Stefan Hajnoczi --- block/qcow2.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'block') diff --git a/block/qcow2.c b/block/qcow2.c index dea12c1b24..f68f0e1074 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -126,7 +126,6 @@ static int qcow2_read_extensions(BlockDriverState *bs, uint64_t start_offset, #ifdef DEBUG_EXT printf("Qcow2: Got format extension %s\n", bs->backing_format); #endif - offset = ((offset + ext.len + 7) & ~7); break; default: @@ -143,11 +142,11 @@ static int qcow2_read_extensions(BlockDriverState *bs, uint64_t start_offset, if (ret < 0) { return ret; } - - offset = ((offset + ext.len + 7) & ~7); } break; } + + offset += ((ext.len + 7) & ~7); } return 0; -- cgit v1.2.1