diff --git a/lib/ext2fs/ChangeLog b/lib/ext2fs/ChangeLog index 80e054a2..74ed6906 100644 --- a/lib/ext2fs/ChangeLog +++ b/lib/ext2fs/ChangeLog @@ -1,3 +1,8 @@ +1998-05-01 Theodore Ts'o + + * initialize.c (ext2fs_initialize): Initialize s_inodes_count in a + way that avoids overflows on disk sizes greater than 4GB. + 1998-04-28 Theodore Ts'o * ext2fs.h: Define EXT2_QSORT_TYPE appropriately for the diff --git a/lib/ext2fs/initialize.c b/lib/ext2fs/initialize.c index ebc41e62..c97a5bb7 100644 --- a/lib/ext2fs/initialize.c +++ b/lib/ext2fs/initialize.c @@ -157,7 +157,8 @@ retry: EXT2_DESC_PER_BLOCK(super) - 1) / EXT2_DESC_PER_BLOCK(super); - set_field(s_inodes_count, (super->s_blocks_count*fs->blocksize)/4096); + /* n.b., fs->blocksize is <= 4096 */ + set_field(s_inodes_count, super->s_blocks_count/(4096/fs->blocksize)); /* * There should be at least as many inodes as the user