Patchwork [1/3] dmg: fix reading of uncompressed chunks

login
register
mail settings
Submitter Christoph Hellwig
Date May 7, 2010, 2:55 p.m.
Message ID <20100507145533.GA14245@lst.de>
Download mbox | patch
Permalink /patch/51926/
State New
Headers show

Comments

Christoph Hellwig - May 7, 2010, 2:55 p.m.
When dmg_read_chunk encounters an uncompressed chunk it currently
calls read without any previous adjustment of the file postion.

This seems very wrong, and the "reference" implementation in
dmg2img does a search to the same offset as done in the various
compression cases, so do the same here.

Signed-off-by: Christoph Hellwig <hch@lst.de>

Patch

Index: qemu-kevin/block/dmg.c
===================================================================
--- qemu-kevin.orig/block/dmg.c	2010-05-03 13:15:34.112253995 +0200
+++ qemu-kevin/block/dmg.c	2010-05-03 13:17:40.696287171 +0200
@@ -239,7 +239,8 @@  static inline int dmg_read_chunk(BDRVDMG
 		return -1;
 	    break; }
 	case 1: /* copy */
-	    ret = read(s->fd, s->uncompressed_chunk, s->lengths[chunk]);
+	    ret = pread(s->fd, s->uncompressed_chunk, s->lengths[chunk],
+                        s->offsets[chunk]);
 	    if (ret != s->lengths[chunk])
 		return -1;
 	    break;