提交 fd29b4bb 编写于 作者: K Kevin Wolf

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: NKevin Wolf <kwolf@redhat.com>
Reviewed-by: NStefan Hajnoczi <stefanha@linux.vnet.ibm.com>
上级 b6a127a1
...@@ -126,7 +126,6 @@ static int qcow2_read_extensions(BlockDriverState *bs, uint64_t start_offset, ...@@ -126,7 +126,6 @@ static int qcow2_read_extensions(BlockDriverState *bs, uint64_t start_offset,
#ifdef DEBUG_EXT #ifdef DEBUG_EXT
printf("Qcow2: Got format extension %s\n", bs->backing_format); printf("Qcow2: Got format extension %s\n", bs->backing_format);
#endif #endif
offset = ((offset + ext.len + 7) & ~7);
break; break;
default: default:
...@@ -143,11 +142,11 @@ static int qcow2_read_extensions(BlockDriverState *bs, uint64_t start_offset, ...@@ -143,11 +142,11 @@ static int qcow2_read_extensions(BlockDriverState *bs, uint64_t start_offset,
if (ret < 0) { if (ret < 0) {
return ret; return ret;
} }
offset = ((offset + ext.len + 7) & ~7);
} }
break; break;
} }
offset += ((ext.len + 7) & ~7);
} }
return 0; return 0;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册