From 90d17ea4884b272cdc59748eef5024e2c4e7b69a Mon Sep 17 00:00:00 2001 From: Thomas Bushnell Date: Fri, 16 Aug 1996 14:32:55 +0000 Subject: *** empty log message *** --- ufs-fsck/ChangeLog | 8 ++++++++ ufs-fsck/dir.c | 2 +- ufs-fsck/pass2.c | 2 ++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/ufs-fsck/ChangeLog b/ufs-fsck/ChangeLog index 615e6458..c8def0d7 100644 --- a/ufs-fsck/ChangeLog +++ b/ufs-fsck/ChangeLog @@ -1,3 +1,11 @@ +Fri Aug 16 10:25:37 1996 Thomas Bushnell, n/BSG + + * dir.c (record_directory): Maximum number of block pointers to + record is NDADDR + NIADDR, not NDADDR * NIADDR. + * pass2.c: Include . + (pass2): Before copying block addresses to DINO in basic + integrity check, assert that DNP->i_numblks isn't too big. + Mon Aug 12 11:39:12 1996 Thomas Bushnell, n/BSG * Makefile (dir): Now ufs-fsck. diff --git a/ufs-fsck/dir.c b/ufs-fsck/dir.c index d4f05858..b058fe9e 100644 --- a/ufs-fsck/dir.c +++ b/ufs-fsck/dir.c @@ -31,7 +31,7 @@ record_directory (struct dinode *dp, ino_t number) blks = howmany (dp->di_size, sblock->fs_bsize); if (blks > NDADDR) - blks = NDADDR * NIADDR; + blks = NDADDR + NIADDR; blks *= sizeof (daddr_t); dnp = malloc (sizeof (struct dirinfo) + blks); diff --git a/ufs-fsck/pass2.c b/ufs-fsck/pass2.c index db63abd7..a2d5996c 100644 --- a/ufs-fsck/pass2.c +++ b/ufs-fsck/pass2.c @@ -19,6 +19,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "fsck.h" +#include /* Verify root inode's allocation and check all directories for viability. Set DIRSORTED array fully and check to make sure @@ -307,6 +308,7 @@ pass2 () } bzero (&dino, sizeof (struct dinode)); dino.di_size = dnp->i_isize; + assert (dnp->i_numblks <= (NDADDR + NIADDR) * sizeof (daddr_t)); bcopy (dnp->i_blks, dino.di_db, dnp->i_numblks); datablocks_iterate (&dino, checkdirblock); -- cgit v1.2.3