summaryrefslogtreecommitdiff
path: root/sbin
diff options
context:
space:
mode:
authorDavid E. O'Brien <obrien@FreeBSD.org>1998-05-27 05:16:08 +0000
committerDavid E. O'Brien <obrien@FreeBSD.org>1998-05-27 05:16:08 +0000
commitbf15b94ee6e1fe86c0ada12ad68d8ca1152de2c1 (patch)
treee1035268517798952960a2edbc6a5bf66e388e0a /sbin
parenta7b98b79a303894d05c69796743b9cf2cc3a06dc (diff)
Notes
Diffstat (limited to 'sbin')
-rw-r--r--sbin/fsck/inode.c8
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;