Don't core dump if there is a corrupt htree interior node. If the block
number is larger than the number of blocks in the directory, don't write
past the end of malloc'ed memory.
Addresses SourceForge Bug: #1512778
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Fix revision 0 error checking so that it doesn't give spurious error
when the user gives a command-line option of "-O none".Add error
checking so that "-r 0 -j", "-r 0 -s 1", and "-r 0 -E resize=XXX" will
print an explanatory error message and abort.
Addresses Debian bug: #392107
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Remove I-D because of DFSG license Nazi's.
Make e2fsck and uuid-dev have its own /usr/share/doc directories, and make
the e2fsck-static package not depend on the e2fsprogs package.
Addresses Debian Bug: #383521
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Check for potential overflow for filesystems contained in regular files
where the filesystem image size is returned by stat64().
Signed-off-by: Eric Sandeen <esandeen@sandeen.net>
Make the smallest journal be 1400 blocks instead of 1024 blocks to
make sure there is enough room to support on-line resizing.
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Check to make sure the filesystem has a resize inode if it is needed to
grow the filesystem. Print the correct error message if the kernel
returns an ENOTTY error to the group extend ioctl
Addresses Debian Bug: #380548
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Create new ext2fs library inline functions in order to calculate
the starting and ending blocks in a block group.
Signed-off-by: Eric Sandeen <esandeen@redhat.com>
There were still some %d's lurking when we print blocks & inodes; also
many of the counters in the e2fsck_struct were signed, and probably
need to be unsigned to avoid overflows.
Signed-off-by: Eric Sandeen <esandeen@redhat.com>
For loops iterating over all group descriptors, consistently define
first_block and last_block in a way that they are inclusive of the
range, and do not overflow.
Previously on the last block group we did a test of <= first +
dec_blocks; this would actually wrap back to 0 for a total block count
of 2^32-1
Also add handling of last block group which may be smaller.
Signed-off-by: Eric Sandeen <esandeen@redhat.com>
Add a new functiom, e2p_percent(), which correct calculates the percentage
of a number based on a given percentage, without worrying about overflow
issues. This is used where we calculate the number of reserved blocks using
a percentage of the total number of blocks in a filesystem.
Based on patches from Eric Sandeen, but generalized to use this new function.
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Signed-off-by: Eric Sandeen <esandeen@redhat.com>
For loops such as:
for (i=1; i <= fs->super->s_blocks_count; i++) {
<do_stuff>
}
if i is an int and s_blocks_count is (2^32-1), the condition is never false.
Change these loops to:
for (i=1; i <= fs->super->s_blocks_count && i > 0; i++) {
<do_stuff>
}
to stop the loop when we overflow i
Signed-off-by: Eric Sandeen <esandeen@redhat.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Add a new function, ext2fs_div_ceil(), which correctly calculates a division
of two unsigned integer where the result is always rounded up the next
largest integer. This is used everywhere where we might have
previously caused an overflow when the number of blocks
or inodes is too close to 2**32-1.
Based on patches from Eric Sandeen, but generalized to use this new function
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Signed-off-by: Eric Sandeen <esandeen@redhat.com>
This patch fixes the blkid.8.in description of the "-l" option. The man
page gives the impression that the first match is the one that is returned.
However, the blkid_find_dev_with_tag() function returns the device with
the highest priority (which is good, because that is what people really want).
Signed-off-by: Andreas Dilger <adilger@clusterfs.com>
all lib/blkid/tst* files to be removed with "make clean", in particular
tst_types.c. That was causing a failure of "make check" in an RPM source
tree. Fix is to explicitly list the test binaries, as lib/ext2fs/Makefile.in
does.
As "make check" was only calling test_probe and tst_types (and none
of the other tst_* tests) it was not clear what was going on, and an
"hg update" would always return the old tst_types.c file back so the
problem was only being seen intermittently... It isn't clear whether
you want the other tst_* programs to be run as part of "make check".
Signed-off-by: Andreas Dilger <adilger@clusterfs.com>
Improve the findsuper program by printing the uuid and label from the
superblocks, as well as the starting and ending offsets of the
filesystem given the information in the superblock. Omit by
default printing superblocks that are likely found in located in an ext3
journal unless an explicit -j option is given.
Signed-off-by: Andreas Dilger <adilger@clusterfs.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Disambiguate the use of "-F" (force) flag for mke2fs to avoid dangerous
situations. The use of -F is needed for regular backing files and
for filesystems on whole block devices. It should NOT be confused
with mke2fs on an apparently-mounted or in-use filesystem.
Signed-off-by: Andreas Dilger <adilger@clusterfs.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
This patch allows "inode_size" to be specified in the mke2fs.conf file,
and always compiles in the "-I" option. In addition, it disallows
specifying the inode size on rev 0 filesystems, though I don't think
this was much of a danger anyways.
Clean up dead lines in ext2fs.h.
Signed-off-by: Andreas Dilger <adilger@clusterfs.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>