]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs_db: warn about suspicious finobt trees when metadumping
authorDarrick J. Wong <djwong@kernel.org>
Thu, 6 Jan 2022 22:13:21 +0000 (14:13 -0800)
committerDarrick J. Wong <djwong@kernel.org>
Thu, 17 Mar 2022 21:40:27 +0000 (14:40 -0700)
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 <djwong@kernel.org>
db/metadump.c

index cc7a4a55074bddc26870d960f170fc4443906272..af8b67d5a980ca4b7d2cc97a1d348a97f0c2843c 100644 (file)
@@ -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 > XFS_BTREE_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))