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 <[email protected]>
---
 fsck/mount.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/fsck/mount.c b/fsck/mount.c
index 0aab071..fb45941 100644
--- a/fsck/mount.c
+++ b/fsck/mount.c
@@ -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)
-- 
2.18.0.rc1



_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to