summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--block-vmdk.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/block-vmdk.c b/block-vmdk.c
index 36653fb2ff..7193f959a3 100644
--- a/block-vmdk.c
+++ b/block-vmdk.c
@@ -101,8 +101,7 @@ static int vmdk_open(BlockDriverState *bs, const char *filename)
return -1;
if (read(fd, &magic, sizeof(magic)) != sizeof(magic))
goto fail;
- magic = le32_to_cpu(magic);
-
+ magic = be32_to_cpu(magic);
if (magic == VMDK3_MAGIC) {
VMDK3Header header;
if (read(fd, &header, sizeof(header)) !=
@@ -136,7 +135,9 @@ static int vmdk_open(BlockDriverState *bs, const char *filename)
s->l1_table = qemu_malloc(l1_size);
if (!s->l1_table)
goto fail;
- if (read(s->fd, s->l1_table, l1_size) != l1_size)
+ if (lseek(fd, s->l1_table_offset, SEEK_SET) == -1)
+ goto fail;
+ if (read(fd, s->l1_table, l1_size) != l1_size)
goto fail;
for(i = 0; i < s->l1_size; i++) {
le32_to_cpus(&s->l1_table[i]);