Path: utzoo!utgpu!jarvis.csri.toronto.edu!clyde.concordia.ca!mcgill-vision!bloom-beacon!eru!luth!sunic!mcsun!ukc!icdoc!doc.ic.ac.uk!zmact61 From: zmact61@doc.ic.ac.uk (Diomidis Spinellis) Newsgroups: comp.bugs.4bsd Subject: Fsck dumps core Keywords: fsck core dump Message-ID: <1552@gould.doc.ic.ac.uk> Date: 6 Feb 90 12:30:27 GMT Sender: news@doc.ic.ac.uk Reply-To: dds@cc.ic.ac.uk (Diomidis Spinellis) Organization: Department of Computing, Imperial College, London, UK Lines: 42 Index: etc/fsck/pass1.c 4.3BSD (including Tahoe) Description: Fsck dumps core. An integer variable, (j in function pass1) can exceed 2^31. When j is used to index dp->di_db[] it gives a negative offset which results in an incorrect address. Repeat-By: Some probably rare combination of disk configuration, paritioning and disk inconsistencies. Fix: Change "etc/fsck/pass1.c" by applying the following patch. A thorough general cleanup to remove type inconsistencies between daddr_t, long and unsigned int is needed, but it looks like a lot of work. *** pass1.c.orig Tue Feb 6 11:42:59 1990 --- pass1.c Tue Feb 6 11:41:57 1990 *************** *** 25,31 **** pass1() { ! register int c, i, j; register DINODE *dp; struct zlncnt *zlnp; int ndb, cgd; --- 25,31 ---- pass1() { ! register unsigned int c, i, j; register DINODE *dp; struct zlncnt *zlnp; int ndb, cgd; -- Diomidis Spinellis Internet: dds@cc.ic.ac.uk Department of Computing BITNET: dds@cc.ic.ac.uk Imperial College UUCP: ...!cernvax!cc.imperial.ac.uk!dds London SW7 2BZ JANET: dds@uk.ac.ic.cc