diff options
Diffstat (limited to 'lib/sqfs/meta_reader.c')
-rw-r--r-- | lib/sqfs/meta_reader.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/lib/sqfs/meta_reader.c b/lib/sqfs/meta_reader.c index 96b59fd..2c6ec97 100644 --- a/lib/sqfs/meta_reader.c +++ b/lib/sqfs/meta_reader.c @@ -68,14 +68,11 @@ int meta_reader_seek(meta_reader_t *m, uint64_t block_start, size_t offset) return 0; } - if (lseek(m->fd, block_start, SEEK_SET) == (off_t)-1) { - perror("seek on image file"); + if (read_data_at("reading meta data header", block_start, + m->fd, &header, 2)) { return -1; } - if (read_data("reading meta data header", m->fd, &header, 2)) - return -1; - header = le16toh(header); compressed = (header & 0x8000) == 0; size = header & 0x7FFF; @@ -92,8 +89,10 @@ int meta_reader_seek(meta_reader_t *m, uint64_t block_start, size_t offset) memset(m->data, 0, sizeof(m->data)); - if (read_data("reading meta data block", m->fd, m->data, size)) + if (read_data_at("reading meta data block", block_start + 2, + m->fd, m->data, size)) { return -1; + } if (compressed) { ret = m->cmp->do_block(m->cmp, m->data, size, |