diff --git a/sbin/fsck/pass1.c b/sbin/fsck/pass1.c index f23eb0d50882..47fe6dcc0bdc 100644 --- a/sbin/fsck/pass1.c +++ b/sbin/fsck/pass1.c @@ -33,7 +33,7 @@ #ifndef lint /*static char sccsid[] = "from: @(#)pass1.c 8.1 (Berkeley) 6/5/93";*/ -static char *rcsid = "$Id: pass1.c,v 1.8 1994/06/14 22:50:48 mycroft Exp $"; +static char *rcsid = "$Id: pass1.c,v 1.9 1994/06/29 11:01:35 ws Exp $"; #endif /* not lint */ #include @@ -96,7 +96,7 @@ checkinode(inumber, idesc) struct zlncnt *zlnp; int ndb, j; mode_t mode; - char symbuf[MAXSYMLINKLEN]; + char *symbuf; dp = getnextinode(inumber); mode = dp->di_mode & IFMT; @@ -149,9 +149,10 @@ checkinode(inumber, idesc) if (doinglevel2 && dp->di_size > 0 && dp->di_size < MAXSYMLINKLEN && dp->di_blocks != 0) { + symbuf = alloca(secsize); if (bread(fsreadfd, symbuf, fsbtodb(&sblock, dp->di_db[0]), - (long)dp->di_size) != 0) + (long)secsize) != 0) errexit("cannot read symlink"); if (debug) { symbuf[dp->di_size] = 0; diff --git a/sbin/fsck/setup.c b/sbin/fsck/setup.c index a158a99600da..e2637a742d67 100644 --- a/sbin/fsck/setup.c +++ b/sbin/fsck/setup.c @@ -33,7 +33,7 @@ #ifndef lint /*static char sccsid[] = "from: @(#)setup.c 8.2 (Berkeley) 2/21/94";*/ -static char *rcsid = "$Id: setup.c,v 1.10 1994/06/08 19:00:32 mycroft Exp $"; +static char *rcsid = "$Id: setup.c,v 1.11 1994/06/29 11:01:37 ws Exp $"; #endif /* not lint */ #define DKTYPENAMES @@ -223,7 +223,7 @@ setup(dev) sbdirty(); dirty(&asblk); } - if (asblk.b_dirty) { + if (asblk.b_dirty && !bflag) { bcopy((char *)&sblock, (char *)&altsblock, (size_t)sblock.fs_sbsize); flush(fswritefd, &asblk); diff --git a/sbin/fsck_ffs/pass1.c b/sbin/fsck_ffs/pass1.c index f23eb0d50882..47fe6dcc0bdc 100644 --- a/sbin/fsck_ffs/pass1.c +++ b/sbin/fsck_ffs/pass1.c @@ -33,7 +33,7 @@ #ifndef lint /*static char sccsid[] = "from: @(#)pass1.c 8.1 (Berkeley) 6/5/93";*/ -static char *rcsid = "$Id: pass1.c,v 1.8 1994/06/14 22:50:48 mycroft Exp $"; +static char *rcsid = "$Id: pass1.c,v 1.9 1994/06/29 11:01:35 ws Exp $"; #endif /* not lint */ #include @@ -96,7 +96,7 @@ checkinode(inumber, idesc) struct zlncnt *zlnp; int ndb, j; mode_t mode; - char symbuf[MAXSYMLINKLEN]; + char *symbuf; dp = getnextinode(inumber); mode = dp->di_mode & IFMT; @@ -149,9 +149,10 @@ checkinode(inumber, idesc) if (doinglevel2 && dp->di_size > 0 && dp->di_size < MAXSYMLINKLEN && dp->di_blocks != 0) { + symbuf = alloca(secsize); if (bread(fsreadfd, symbuf, fsbtodb(&sblock, dp->di_db[0]), - (long)dp->di_size) != 0) + (long)secsize) != 0) errexit("cannot read symlink"); if (debug) { symbuf[dp->di_size] = 0; diff --git a/sbin/fsck_ffs/setup.c b/sbin/fsck_ffs/setup.c index a158a99600da..e2637a742d67 100644 --- a/sbin/fsck_ffs/setup.c +++ b/sbin/fsck_ffs/setup.c @@ -33,7 +33,7 @@ #ifndef lint /*static char sccsid[] = "from: @(#)setup.c 8.2 (Berkeley) 2/21/94";*/ -static char *rcsid = "$Id: setup.c,v 1.10 1994/06/08 19:00:32 mycroft Exp $"; +static char *rcsid = "$Id: setup.c,v 1.11 1994/06/29 11:01:37 ws Exp $"; #endif /* not lint */ #define DKTYPENAMES @@ -223,7 +223,7 @@ setup(dev) sbdirty(); dirty(&asblk); } - if (asblk.b_dirty) { + if (asblk.b_dirty && !bflag) { bcopy((char *)&sblock, (char *)&altsblock, (size_t)sblock.fs_sbsize); flush(fswritefd, &asblk);