diff --git a/debugfs/ChangeLog b/debugfs/ChangeLog index aaed9502..ae7d09b1 100644 --- a/debugfs/ChangeLog +++ b/debugfs/ChangeLog @@ -1,3 +1,10 @@ +2007-03-21 Theodore Tso + + * 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 * debugfs.c (do_lcd): Allow the lcd command when debugfs does not diff --git a/debugfs/dump.c b/debugfs/dump.c index fbaf703e..577959e7 100644 --- a/debugfs/dump.c +++ b/debugfs/dump.c @@ -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; diff --git a/debugfs/htree.c b/debugfs/htree.c index 7abdfc02..2d51ec3a 100644 --- a/debugfs/htree.c +++ b/debugfs/htree.c @@ -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; diff --git a/debugfs/ls.c b/debugfs/ls.c index 8e97ce8b..ffb2310e 100644 --- a/debugfs/ls.c +++ b/debugfs/ls.c @@ -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;