diff options
Diffstat (limited to 'lib/sqfs')
-rw-r--r-- | lib/sqfs/dir_reader.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/sqfs/dir_reader.c b/lib/sqfs/dir_reader.c index e6467ef..f560069 100644 --- a/lib/sqfs/dir_reader.c +++ b/lib/sqfs/dir_reader.c @@ -164,7 +164,7 @@ int sqfs_dir_reader_read(sqfs_dir_reader_t *rd, sqfs_dir_entry_t **out) int err; if (!rd->entries) { - if (rd->size < sizeof(rd->hdr)) + if (rd->size <= sizeof(rd->hdr)) return 1; err = sqfs_meta_reader_read_dir_header(rd->meta_dir, &rd->hdr); @@ -175,6 +175,12 @@ int sqfs_dir_reader_read(sqfs_dir_reader_t *rd, sqfs_dir_entry_t **out) rd->entries = rd->hdr.count + 1; } + if (rd->size <= sizeof(*ent)) { + rd->size = 0; + rd->entries = 0; + return 1; + } + err = sqfs_meta_reader_read_dir_ent(rd->meta_dir, &ent); if (err) return err; |