vmdk 3 fixes
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>
Wed, 25 Aug 2004 20:50:14 +0000 (20:50 +0000)
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>
Wed, 25 Aug 2004 20:50:14 +0000 (20:50 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1052 c046a42c-6fe2-441c-8c8c-71466251a162

block-vmdk.c

index 36653fb2ffc824a02937b9fd6cf4ef8be7599367..7193f959a32a2afb9a1c98e0bd745fdc3662bb4c 100644 (file)
@@ -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]);