fsck.f2fs: fix to avoid overflow during print_inode_info()
authorChao Yu <yuchao0@huawei.com>
Wed, 15 Apr 2020 03:26:48 +0000 (11:26 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Wed, 6 May 2020 14:41:06 +0000 (07:41 -0700)
While dumping files during fsck, print_inode_info() didn't check
sanity of inode, so insane i_extra_isize could cause overflow
when printing i_addr, to avoid that, let's add a check condition.

Signed-off-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fsck/mount.c

index 0aab071..fb45941 100644 (file)
@@ -237,9 +237,14 @@ void print_inode_info(struct f2fs_sb_info *sbi,
        }
 
        for (i = 0; i < ADDRS_PER_INODE(inode); i++) {
-               block_t blkaddr = le32_to_cpu(inode->i_addr[i + ofs]);
+               block_t blkaddr;
                char *flag = "";
 
+               if (i + ofs >= DEF_ADDRS_PER_INODE)
+                       break;
+
+               blkaddr = le32_to_cpu(inode->i_addr[i + ofs]);
+
                if (blkaddr == 0x0)
                        continue;
                if (blkaddr == COMPRESS_ADDR)