]> git.ipfire.org Git - thirdparty/e2fsprogs.git/commitdiff
e2fsck: fix incorrect bbitmap checksum failure caused by integer overflow
authorDarrick J. Wong <darrick.wong@oracle.com>
Mon, 16 Sep 2013 13:41:15 +0000 (09:41 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Mon, 16 Sep 2013 13:41:15 +0000 (09:41 -0400)
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 <darrick.wong@oracle.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
e2fsck/pass5.c

index 51e4683dc19d5e560127fd9327d3e177e2dc9731..346c83191e61db61a3649297e81c756e7908f846 100644 (file)
@@ -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);