Whamcloud - gitweb
filefrag: Fix a core dump on sparc32 platforms with 8k file systems
authorTheodore Ts'o <tytso@mit.edu>
Sat, 28 Nov 2009 15:28:03 +0000 (10:28 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Sun, 29 Nov 2009 06:03:04 +0000 (01:03 -0500)
On 32-bit platforms where the file system block size is 8k or greater,
the calculation bpib*bpib*bpib* will overflow a 32-bit calculation,
leading to a divide by zero error.  Fix this.

Thanks to Mikulas Patocka for pointing this out.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
misc/filefrag.c

index 11783fd..1611f90 100644 (file)
@@ -341,7 +341,7 @@ static void frag_report(const char *filename)
                                if (((i-EXT2_DIRECT-bpib) % (bpib*bpib)) == 0)
                                        last_block++;
                                if (((i-EXT2_DIRECT-bpib-bpib*bpib) %
-                                                       (bpib*bpib*bpib)) == 0)
+                                    (((__u64) bpib)*bpib*bpib)) == 0)
                                        last_block++;
                        }
                        rc = get_bmap(fd, i, &block);