Should error out this invalid case immediately.

Fixes: 654a9be311a1 ("erofs-utils: lib: support fragments")
Closes: https://github.com/erofs/erofs-utils/issues/18
Signed-off-by: Gao Xiang <hsiang...@linux.alibaba.com>
---
 lib/data.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/lib/data.c b/lib/data.c
index 28460ef..0f79f78 100644
--- a/lib/data.c
+++ b/lib/data.c
@@ -249,6 +249,11 @@ int z_erofs_read_one_data(struct erofs_inode *inode,
        int ret = 0;
 
        if (map->m_flags & EROFS_MAP_FRAGMENT) {
+               if (__erofs_unlikely(inode->nid == sbi->packed_nid)) {
+                       erofs_err("fragment should not exist in the packed 
inode %llu",
+                                 sbi->packed_nid | 0ULL);
+                       return -EFSCORRUPTED;
+               }
                return erofs_packedfile_read(sbi, buffer, length - skip,
                                   inode->fragmentoff + skip);
        }
-- 
2.43.5


Reply via email to