From patchwork Fri May 7 14:55:33 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [1/3] dmg: fix reading of uncompressed chunks Date: Fri, 07 May 2010 04:55:33 -0000 From: Christoph Hellwig X-Patchwork-Id: 51926 Message-Id: <20100507145533.GA14245@lst.de> To: qemu-devel@nongnu.org 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 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;