diff options
| author | David E. O'Brien <obrien@FreeBSD.org> | 1998-05-27 05:16:08 +0000 |
|---|---|---|
| committer | David E. O'Brien <obrien@FreeBSD.org> | 1998-05-27 05:16:08 +0000 |
| commit | bf15b94ee6e1fe86c0ada12ad68d8ca1152de2c1 (patch) | |
| tree | e1035268517798952960a2edbc6a5bf66e388e0a /sbin | |
| parent | a7b98b79a303894d05c69796743b9cf2cc3a06dc (diff) | |
Notes
Diffstat (limited to 'sbin')
| -rw-r--r-- | sbin/fsck/inode.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/sbin/fsck/inode.c b/sbin/fsck/inode.c index 5adac75f0832..c83c799038a7 100644 --- a/sbin/fsck/inode.c +++ b/sbin/fsck/inode.c @@ -72,6 +72,8 @@ ckinode(dp, idesc) (dp->di_size < sblock.fs_maxsymlinklen || dp->di_blocks == 0))) return (KEEPON); dino = *dp; + if (!sblock.fs_bsize) + errexit("!sblock.fs_bsize\n"); ndb = howmany(dino.di_size, sblock.fs_bsize); for (ap = &dino.di_db[0]; ap < &dino.di_db[NDADDR]; ap++) { if (--ndb == 0 && (offset = blkoff(&sblock, dino.di_size)) != 0) @@ -168,6 +170,8 @@ iblock(idesc, ilevel, isize) ilevel--; for (sizepb = sblock.fs_bsize, i = 0; i < ilevel; i++) sizepb *= NINDIR(&sblock); + if (!sizepb) + errexit("!sizepb\n"); nif = howmany(isize , sizepb); if (nif > NINDIR(&sblock)) nif = NINDIR(&sblock); @@ -234,7 +238,7 @@ chkrange(blk, cnt) { register int c; - if ((unsigned)(blk + cnt) > maxfsblock) + if (blk < 0 || blk >= maxfsblock || cnt < 0 || cnt > maxfsblock - blk) return (1); c = dtog(&sblock, blk); if (blk < cgdmin(&sblock, c)) { @@ -368,6 +372,8 @@ cacheino(dp, inumber) struct inoinfo **inpp; unsigned int blks; + if (!sblock.fs_bsize) + errexit("!sblock.fs_bsize\n"); blks = howmany(dp->di_size, sblock.fs_bsize); if (blks > NDADDR) blks = NDADDR + NIADDR; |
