Whamcloud - gitweb
[COVERITY] Avoid static buffer overruns in debugfs
authorBrian Behlendorf <behlendorf1@llnl.gov>
Wed, 21 Mar 2007 19:09:15 +0000 (15:09 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Wed, 21 Mar 2007 19:09:15 +0000 (15:09 -0400)
Add an extra byte to EXT2_NAME_LEN in the static allocation for the
required trailing null.  This allows filenames up to the maximum
length of EXT2_NAME_LEN withover an overrun.

Coverity ID: 11: Overrun Static
Coverity ID: 12: Overrun Static
Coverity ID: 13: Overrun Static

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
debugfs/ChangeLog
debugfs/dump.c
debugfs/htree.c
debugfs/ls.c

index aaed950..ae7d09b 100644 (file)
@@ -1,3 +1,10 @@
+2007-03-21  Theodore Tso  <tytso@mit.edu>
+
+       * dump.c (rdump_dirent), htree.c (htree_dump_leaf_node), 
+               ls.c (list_dir_proc): Add an extra byte to EXT2_NAME_LEN
+               to avoid the possibility of an array overrun if the
+               filename is exactly EXT2_NAME_LEN in size.
+
 2007-03-07  Theodore Tso  <tytso@mit.edu>
 
        * debugfs.c (do_lcd): Allow the lcd command when debugfs does not
index fbaf703..577959e 100644 (file)
@@ -292,7 +292,7 @@ static int rdump_dirent(struct ext2_dir_entry *dirent,
                        int blocksize EXT2FS_ATTR((unused)),
                        char *buf EXT2FS_ATTR((unused)), void *private)
 {
-       char name[EXT2_NAME_LEN];
+       char name[EXT2_NAME_LEN + 1];
        int thislen;
        const char *dumproot = private;
        struct ext2_inode inode;
index 7abdfc0..2d51ec3 100644 (file)
@@ -35,7 +35,7 @@ static void htree_dump_leaf_node(ext2_filsys fs, ext2_ino_t ino,
        struct ext2_dir_entry *dirent;
        int             thislen, col = 0;
        unsigned int    offset = 0;
-       char            name[EXT2_NAME_LEN];
+       char            name[EXT2_NAME_LEN + 1];
        char            tmp[EXT2_NAME_LEN + 16];
        blk_t           pblk;
        ext2_dirhash_t  hash;
index 8e97ce8..ffb2310 100644 (file)
@@ -52,7 +52,7 @@ static int list_dir_proc(ext2_ino_t dir EXT2FS_ATTR((unused)),
        ext2_ino_t              ino;
        struct tm               *tm_p;
        time_t                  modtime;
-       char                    name[EXT2_NAME_LEN];
+       char                    name[EXT2_NAME_LEN + 1];
        char                    tmp[EXT2_NAME_LEN + 16];
        char                    datestr[80];
        char                    lbr, rbr;