diff options
author | Kirk McKusick <mckusick@FreeBSD.org> | 2000-07-12 06:19:22 +0000 |
---|---|---|
committer | Kirk McKusick <mckusick@FreeBSD.org> | 2000-07-12 06:19:22 +0000 |
commit | 7932349eff5a3dd7ab86d0c8ea1c59816f37e2b7 (patch) | |
tree | 80daa05e54e4abb9e918fc0476323f872eea023a /sbin/fsck | |
parent | 07632cbf66bcd6c2169f6457129553f8b0bf84c7 (diff) | |
download | src-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.c | 6 |
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) |