dmg: fix reading of uncompressed chunks

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>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
Christoph Hellwig 2010-05-07 16:55:33 +02:00 committed by Kevin Wolf
parent dede4188cc
commit cd02a24b61
1 changed files with 2 additions and 1 deletions

View File

@ -239,7 +239,8 @@ static inline int dmg_read_chunk(BDRVDMGState *s,int sector_num)
return -1; return -1;
break; } break; }
case 1: /* copy */ 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]) if (ret != s->lengths[chunk])
return -1; return -1;
break; break;