diff --git a/sbin/fsck/inode.c b/sbin/fsck/inode.c index c16571c1636f..429dd3b2267b 100644 --- a/sbin/fsck/inode.c +++ b/sbin/fsck/inode.c @@ -235,7 +235,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)) { diff --git a/sbin/fsck_ffs/inode.c b/sbin/fsck_ffs/inode.c index c16571c1636f..429dd3b2267b 100644 --- a/sbin/fsck_ffs/inode.c +++ b/sbin/fsck_ffs/inode.c @@ -235,7 +235,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)) { diff --git a/sbin/fsck_ifs/inode.c b/sbin/fsck_ifs/inode.c index c16571c1636f..429dd3b2267b 100644 --- a/sbin/fsck_ifs/inode.c +++ b/sbin/fsck_ifs/inode.c @@ -235,7 +235,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)) {