diff options
author | Kirk McKusick <mckusick@FreeBSD.org> | 2023-05-27 05:41:57 +0000 |
---|---|---|
committer | Kirk McKusick <mckusick@FreeBSD.org> | 2023-06-07 22:40:35 +0000 |
commit | 52f50301aaabddc6e3c1bc8c354101cfd7ea0463 (patch) | |
tree | afc1cddf97bf5cc92bbe18ad5afb13fdb0e4bffe | |
parent | 77cbed11b2eabaa811963c60e83e83fd6677fca3 (diff) | |
download | src-52f50301aaabddc6e3c1bc8c354101cfd7ea0463.tar.gz src-52f50301aaabddc6e3c1bc8c354101cfd7ea0463.zip |
Correct two bugs in fsck_ffs(8) triggered by corrupted filesystems.
Reported-by: Robert Morris
PR: 271310
PR: 271354
Sponsored-by: The FreeBSD Foundation
(cherry picked from commit 03a8680202ef7d7e68adc70625633c490b4ed637)
-rw-r--r-- | sbin/fsck_ffs/pass1.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/sbin/fsck_ffs/pass1.c b/sbin/fsck_ffs/pass1.c index e784fd29dc1c..863bf34ff0fc 100644 --- a/sbin/fsck_ffs/pass1.c +++ b/sbin/fsck_ffs/pass1.c @@ -400,13 +400,13 @@ checkinode(ino_t inumber, struct inodesc *idesc, int rebuiltcg) if (mode == IFDIR) { if (DIP(dp, di_size) == 0) { inoinfo(inumber)->ino_state = DCLEAR; - } else if (DIP(dp, di_nlink) <= 0) { + } else if (DIP(dp, di_nlink) == 0) { inoinfo(inumber)->ino_state = DZLINK; } else { inoinfo(inumber)->ino_state = DSTATE; - cacheino(dp, inumber); - countdirs++; } + cacheino(dp, inumber); + countdirs++; } else if (DIP(dp, di_nlink) <= 0) inoinfo(inumber)->ino_state = FZLINK; else |