]> git.wh0rd.org - dump.git/blobdiff - dump/traverse.c
Fixed a overflow problem in dump (LFS)
[dump.git] / dump / traverse.c
index 2a160fa95f31a3ff716ad78bd6a34a49784af95a..975f6f82e3bf8957c28dd937a68a68ce05ffd905 100644 (file)
@@ -41,7 +41,7 @@
 
 #ifndef lint
 static const char rcsid[] =
-       "$Id: traverse.c,v 1.36 2001/07/19 09:03:44 stelian Exp $";
+       "$Id: traverse.c,v 1.38 2001/08/17 09:55:09 stelian Exp $";
 #endif /* not lint */
 
 #include <config.h>
@@ -159,12 +159,9 @@ int dump_fs_open(const char *disk, ext2_filsys *fs)
                else {
                        if (es->s_feature_compat &
                                EXT3_FEATURE_COMPAT_HAS_JOURNAL && 
-                               journal_ino) {
-                               msg("Exclude journal inode %u\n",
-                                   journal_ino);
-                               do_exclude_ino(journal_ino);
-                       }
-                       do_exclude_ino(EXT2_RESIZE_INO);
+                               journal_ino)
+                               do_exclude_ino(journal_ino, "journal inode");
+                       do_exclude_ino(EXT2_RESIZE_INO, "resize inode");
                }
        }
        return retval;
@@ -901,8 +898,8 @@ dumpino(struct dinode *dp, dump_ino_t ino)
 
        ext2fs_block_iterate2(fs, (ext2_ino_t)ino, 0, NULL, dumponeblock, (void *)&bc);
        /* deal with holes at the end of the inode */
-       if (i_size > bc.next_block*sblock->fs_fsize) {
-               remaining = i_size - bc.next_block*sblock->fs_fsize;
+       if (i_size > ((u_quad_t)bc.next_block) * sblock->fs_fsize) {
+               remaining = i_size - ((u_quad_t)bc.next_block) * sblock->fs_fsize;
                for (i = 0; i < howmany(remaining, sblock->fs_fsize); i++) {
                        bc.buf[bc.cnt++] = 0;
                        if (bc.cnt == bc.max) {