From 9b9c121a877adc88c3b95e791e88e8d54da23611 Mon Sep 17 00:00:00 2001 From: "Darrick J. Wong" Date: Tue, 17 May 2022 22:48:12 -0400 Subject: [PATCH] xfs_db: warn about suspicious finobt trees when metadumping We warn about suspicious roots and btree heights before metadumping the inode btree, so do the same for the free inode btree. Signed-off-by: Darrick J. Wong Reviewed-by: Eric Sandeen Reviewed-by: Christoph Hellwig Signed-off-by: Eric Sandeen --- db/metadump.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/db/metadump.c b/db/metadump.c index c6f9d382a..0d151bb82 100644 --- a/db/metadump.c +++ b/db/metadump.c @@ -2664,6 +2664,21 @@ copy_inodes( root = be32_to_cpu(agi->agi_free_root); levels = be32_to_cpu(agi->agi_free_level); + if (root == 0 || root > mp->m_sb.sb_agblocks) { + if (show_warnings) + print_warning("invalid block number (%u) in " + "finobt root in agi %u", root, + agno); + return 1; + } + + if (levels > M_IGEO(mp)->inobt_maxlevels) { + if (show_warnings) + print_warning("invalid level (%u) in finobt " + "root in agi %u", levels, agno); + return 1; + } + finobt = 1; if (!scan_btree(agno, root, levels, TYP_FINOBT, &finobt, scanfunc_ino)) -- 2.47.2