Skip to content

Commit

Permalink
qcow2: Fix offset in qcow2_read_extensions
Browse files Browse the repository at this point in the history
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 <[email protected]>
Reviewed-by: Stefan Hajnoczi <[email protected]>
  • Loading branch information
kevmw committed Feb 29, 2012
1 parent b6a127a commit fd29b4b
Showing 1 changed file with 2 additions and 3 deletions.
5 changes: 2 additions & 3 deletions block/qcow2.c
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -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;
Expand Down

0 comments on commit fd29b4b

Please sign in to comment.