aboutsummaryrefslogtreecommitdiff
path: root/sbin/fsck
diff options
context:
space:
mode:
authorKirk McKusick <mckusick@FreeBSD.org>2000-07-12 06:19:22 +0000
committerKirk McKusick <mckusick@FreeBSD.org>2000-07-12 06:19:22 +0000
commit7932349eff5a3dd7ab86d0c8ea1c59816f37e2b7 (patch)
tree80daa05e54e4abb9e918fc0476323f872eea023a /sbin/fsck
parent07632cbf66bcd6c2169f6457129553f8b0bf84c7 (diff)
downloadsrc-7932349eff5a3dd7ab86d0c8ea1c59816f37e2b7.tar.gz
src-7932349eff5a3dd7ab86d0c8ea1c59816f37e2b7.zip
Ensure that block and character devices as well as fifo's and sockets
all have zero length. A non-zero length panic's the kernel when one of these is deleted. PR: 19426 Submitted by: Ian Dowse <iedowse@maths.tcd.ie> Reviewed by: dwmalone@FreeBSD.org
Notes
Notes: svn path=/head/; revision=63003
Diffstat (limited to 'sbin/fsck')
-rw-r--r--sbin/fsck/pass1.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/sbin/fsck/pass1.c b/sbin/fsck/pass1.c
index 59826a7e2fc2..fcd596b9cc27 100644
--- a/sbin/fsck/pass1.c
+++ b/sbin/fsck/pass1.c
@@ -209,6 +209,12 @@ checkinode(inumber, idesc)
dp->di_mode = IFREG|0600;
inodirty();
}
+ if ((mode == IFBLK || mode == IFCHR || mode == IFIFO ||
+ mode == IFSOCK) && dp->di_size != 0) {
+ if (debug)
+ printf("bad special-file size %qu:", dp->di_size);
+ goto unknown;
+ }
ndb = howmany(dp->di_size, sblock.fs_bsize);
if (ndb < 0) {
if (debug)