From: Theodore Ts'o Date: Thu, 22 Jan 2009 20:52:50 +0000 (-0500) Subject: e2fsck: Add superblock check to make sure s_first_ino is valid X-Git-Tag: v1.41.4~6 X-Git-Url: https://git.whamcloud.com/gitweb?a=commitdiff_plain;h=1f790a7cc1fbb0dc2d2f621d2508f52a62f80150;p=tools%2Fe2fsprogs.git e2fsck: Add superblock check to make sure s_first_ino is valid An deliberately corrupted filesystem with an insanely large s_first_ino field could cause e2fsck to crash with a seg fault. Thanks to Eric Sesterhenn for supplying test cases which demonstrated this issue. Signed-off-by: "Theodore Ts'o" --- diff --git a/e2fsck/super.c b/e2fsck/super.c index cd2b9f0..24ec7a8 100644 --- a/e2fsck/super.c +++ b/e2fsck/super.c @@ -513,6 +513,10 @@ void check_super_block(e2fsck_t ctx) check_super_value(ctx, "reserved_gdt_blocks", sb->s_reserved_gdt_blocks, MAX_CHECK, 0, fs->blocksize/4); + if (sb->s_rev_level > EXT2_GOOD_OLD_REV) + check_super_value(ctx, "first_ino", sb->s_first_ino, + MIN_CHECK | MAX_CHECK, + EXT2_GOOD_OLD_FIRST_INO, sb->s_inodes_count); inode_size = EXT2_INODE_SIZE(sb); check_super_value(ctx, "inode_size", inode_size, MIN_CHECK | MAX_CHECK,