summaryrefslogtreecommitdiffstats
path: root/sbin/fsck_ifs
diff options
context:
space:
mode:
authormckusick <mckusick@FreeBSD.org>2000-07-12 06:19:22 +0000
committermckusick <mckusick@FreeBSD.org>2000-07-12 06:19:22 +0000
commit64fa5028905150a5b3932025b8ab4f1e1e9420c4 (patch)
tree77954f8db3cdefef1bc4794bd3a52f2a81561027 /sbin/fsck_ifs
parent3b0629faf732df6cf8dd2a9f9f7e5125f988e278 (diff)
downloadFreeBSD-src-64fa5028905150a5b3932025b8ab4f1e1e9420c4.zip
FreeBSD-src-64fa5028905150a5b3932025b8ab4f1e1e9420c4.tar.gz
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
Diffstat (limited to 'sbin/fsck_ifs')
-rw-r--r--sbin/fsck_ifs/pass1.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/sbin/fsck_ifs/pass1.c b/sbin/fsck_ifs/pass1.c
index 59826a7..fcd596b 100644
--- a/sbin/fsck_ifs/pass1.c
+++ b/sbin/fsck_ifs/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)
OpenPOWER on IntegriCloud