]> git.proxmox.com Git - qemu.git/commitdiff
qcow2: Fix offset in qcow2_read_extensions
authorKevin Wolf <kwolf@redhat.com>
Wed, 22 Feb 2012 11:31:47 +0000 (12:31 +0100)
committerKevin Wolf <kwolf@redhat.com>
Wed, 29 Feb 2012 11:48:47 +0000 (12:48 +0100)
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 <kwolf@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
block/qcow2.c

index dea12c1b2435851a0454fcbba5ba5dd6b18280a8..f68f0e10745decec330f71fbfdbbb5f79468ff8e 100644 (file)
@@ -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;