Message ID | 20100507145533.GA14245@lst.de |
---|---|
State | New |
Headers | show |
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;
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>