]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs_repair: fix off by one error when rebuilding high keys
authorDarrick J. Wong <darrick.wong@oracle.com>
Mon, 28 Jan 2019 19:03:11 +0000 (13:03 -0600)
committerEric Sandeen <sandeen@redhat.com>
Mon, 28 Jan 2019 19:03:11 +0000 (13:03 -0600)
Fix an off-by-one error when scanning a rmap btree block for high keys
as part of rebuilding rmap btrees during phase 5.  This causes
xfs_repair to emit a corrupt filesystem, which is bad.

This can be reproduced pretty easily by exporting
TEST_XFS_REPAIR_REBUILD=1 and running generic/051 with a 1k block size.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
repair/phase5.c

index 85d1f4fbd179626e770e58965b5fe514993ef347..1bacfc7f9f393b2a015d7e3df7e5efc0a7fcad68 100644 (file)
@@ -1500,7 +1500,7 @@ prop_rmap_highkey(
                bt_key->rm_offset = cpu_to_be64(
                                libxfs_rmap_irec_offset_pack(&high_key));
 
-               for (i = 1; i < numrecs - 1; i++) {
+               for (i = 1; i <= numrecs; i++) {
                        bt_key = XFS_RMAP_HIGH_KEY_ADDR(bt_hdr, i);
                        key.rm_startblock = be32_to_cpu(bt_key->rm_startblock);
                        key.rm_owner = be64_to_cpu(bt_key->rm_owner);