From 2db19bce8146a63b1cef19fe4628014c7f7de816 Mon Sep 17 00:00:00 2001 From: "Darrick J. Wong" Date: Mon, 16 Sep 2013 09:41:15 -0400 Subject: [PATCH] e2fsck: fix incorrect bbitmap checksum failure caused by integer overflow On a filesystem with more than 2^32 blocks, the block group checksum test will fail because "i" (the group number) is a 32-bit quantity that is used to calculate the group's block bitmap block number. Unfortunately, "i" is not automatically promoted to 64-bit for this calculation and overflows. When this happens, e2fsck will incorrectly report bitmap checksum errors. Signed-off-by: Darrick J. Wong Signed-off-by: Theodore Ts'o --- e2fsck/pass5.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2fsck/pass5.c b/e2fsck/pass5.c index 51e4683..346c831 100644 --- a/e2fsck/pass5.c +++ b/e2fsck/pass5.c @@ -168,7 +168,7 @@ static void check_block_bitmap_checksum(e2fsck_t ctx) blk_itr = EXT2FS_B2C(ctx->fs, ctx->fs->super->s_first_data_block) + - (i * (nbytes << 3)); + ((blk64_t) i * (nbytes << 3)); retval = ext2fs_get_block_bitmap_range2(ctx->fs->block_map, blk_itr, nbytes << 3, buf); -- 1.8.3.1