Otherwise, if block address is invalid, we may access invalid memory address in is_sit_bitmap_set().
Signed-off-by: Chao Yu <[email protected]> --- fsck/dump.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/fsck/dump.c b/fsck/dump.c index 8481a58..144c10e 100644 --- a/fsck/dump.c +++ b/fsck/dump.c @@ -486,10 +486,15 @@ void dump_node(struct f2fs_sb_info *sbi, nid_t nid, int force) DBG(1, "nat_entry.version [0x%x]\n", ni.version); DBG(1, "nat_entry.ino [0x%x]\n", ni.ino); + if (!IS_VALID_BLK_ADDR(sbi, ni.blk_addr)) { + MSG(force, "Invalid node blkaddr: %u\n\n", ni.blk_addr); + goto out; + } + if (ni.blk_addr == 0x0) MSG(force, "Invalid nat entry\n\n"); else if (!is_sit_bitmap_set(sbi, ni.blk_addr)) - MSG(force, "Invalid node blk addr\n\n"); + MSG(force, "Invalid sit bitmap, %u\n\n", ni.blk_addr); DBG(1, "node_blk.footer.ino [0x%x]\n", le32_to_cpu(node_blk->footer.ino)); DBG(1, "node_blk.footer.nid [0x%x]\n", le32_to_cpu(node_blk->footer.nid)); @@ -504,7 +509,7 @@ void dump_node(struct f2fs_sb_info *sbi, nid_t nid, int force) print_node_info(sbi, node_blk, force); MSG(force, "Invalid (i)node block\n\n"); } - +out: free(node_blk); } -- 2.18.0.rc1 _______________________________________________ Linux-f2fs-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
