diff --git a/e2fsprogs-1.42-copy_generic_bitmap-fix.patch b/e2fsprogs-1.42-copy_generic_bitmap-fix.patch new file mode 100644 index 0000000..c250459 --- /dev/null +++ b/e2fsprogs-1.42-copy_generic_bitmap-fix.patch @@ -0,0 +1,50 @@ +(submitted to list) + +[PATCH] libext2fs: copy cluster_bits in ext2fs_copy_generic_bmap + +The f_lotsbad regression test was failing on some systems +with: + +@@ -26,6 +61,7 @@ + + Restarting e2fsck from the beginning... + Pass 1: Checking inodes, blocks, and sizes ++Illegal block number passed to ext2fs_test_block_bitmap #0 for in-use block map + Pass 2: Checking directory structure + Entry 'termcap' in / (2) has deleted/unused inode 12. Clear? yes + +Running with valgrind (./test_script --valgrind f_lotsbad) we +see: + ++==31409== Conditional jump or move depends on uninitialised value(s) ++==31409== at 0x42927A: ext2fs_test_generic_bmap (gen_bitmap64.c:378) + +among others. + +Looking at gen_bitmap64.c: +376: arg >>= bitmap->cluster_bits; +377: +378: if ((arg < bitmap->start) || (arg > bitmap->end)) { + +A little more debugging showed that it was actually +bitmap->cluster_bits which was uninitialized, because it never +gets copied over in ext2fs_copy_generic_bmap() + +Patch below resolves the issue. + +Reported-by: Andreas Dilger +Signed-off-by: Eric Sandeen +--- + +Index: e2fsprogs-1.42/lib/ext2fs/gen_bitmap64.c +=================================================================== +--- e2fsprogs-1.42.orig/lib/ext2fs/gen_bitmap64.c ++++ e2fsprogs-1.42/lib/ext2fs/gen_bitmap64.c +@@ -193,6 +193,7 @@ errcode_t ext2fs_copy_generic_bmap(ext2f + new_bmap->real_end = src->real_end; + new_bmap->bitmap_ops = src->bitmap_ops; + new_bmap->base_error_code = src->base_error_code; ++ new_bmap->cluster_bits = src->cluster_bits; + + descr = src->description; + if (descr) { diff --git a/e2fsprogs.spec b/e2fsprogs.spec index 828226d..1739a1f 100644 --- a/e2fsprogs.spec +++ b/e2fsprogs.spec @@ -4,7 +4,7 @@ Summary: Utilities for managing ext2, ext3, and ext4 filesystems Name: e2fsprogs Version: 1.42 -Release: 0.1.WIP.0702%{?dist} +Release: 0.2.WIP.0702%{?dist} # License tags based on COPYING file distinctions for various components License: GPLv2 @@ -14,6 +14,7 @@ Source0: ftp://ftp.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs/e2fsprogs- Source1: ext2_types-wrapper.h Patch1: e2fsprogs-1.40.4-sb_feature_check_ignore.patch +Patch2: e2fsprogs-1.42-copy_generic_bitmap-fix.patch Url: http://e2fsprogs.sourceforge.net/ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) @@ -149,6 +150,8 @@ It was originally inspired by the Multics SubSystem library. # after an selinux install... %patch1 -p1 -b .featurecheck +%patch2 -p1 + %build %configure --enable-elf-shlibs --enable-nls --disable-uuidd --disable-fsck \ --disable-e2initrd-helper --disable-libblkid --disable-libuuid @@ -315,6 +318,9 @@ exit 0 %{_libdir}/pkgconfig/ss.pc %changelog +* Tue Aug 09 2011 Eric Sandeen 1.42-0.2.WIP.0702 +- Fix use of uninitialized memory via ext2fs_copy_generic_bmap() + * Tue Aug 09 2011 Eric Sandeen 1.42-0.1.WIP.0702 - Test release for >16T support