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
