From b9919ec96021f96fdda751009e81ce222be45ed3 Mon Sep 17 00:00:00 2001 From: Xin LI Date: Mon, 19 Aug 2019 04:28:12 +0000 Subject: Remove redundant check and wrong fix: fat.c checks already take care about cluster chains. Obtained from: OpenBSD MFC after: 2 weeks --- sbin/fsck_msdosfs/dir.c | 22 +++------------------- 1 file changed, 3 insertions(+), 19 deletions(-) (limited to 'sbin/fsck_msdosfs/dir.c') diff --git a/sbin/fsck_msdosfs/dir.c b/sbin/fsck_msdosfs/dir.c index e56bbf80c6bf..191ff49ccd81 100644 --- a/sbin/fsck_msdosfs/dir.c +++ b/sbin/fsck_msdosfs/dir.c @@ -220,7 +220,6 @@ int resetDosDirSection(struct bootblock *boot, struct fatEntry *fat) { int b1, b2; - cl_t cl; int ret = FSOK; size_t len; @@ -253,24 +252,9 @@ resetDosDirSection(struct bootblock *boot, struct fatEntry *fat) boot->bpbRootClust); return FSFATAL; } - cl = fat[boot->bpbRootClust].next; - if (cl < CLUST_FIRST - || (cl >= CLUST_RSRVD && cl< CLUST_EOFS) - || fat[boot->bpbRootClust].head != boot->bpbRootClust) { - if (cl == CLUST_FREE) - pwarn("Root directory starts with free cluster\n"); - else if (cl >= CLUST_RSRVD) - pwarn("Root directory starts with cluster marked %s\n", - rsrvdcltype(cl)); - else { - pfatal("Root directory doesn't start a cluster chain"); - return FSFATAL; - } - if (ask(1, "Fix")) { - fat[boot->bpbRootClust].next = CLUST_FREE; - ret = FSFATMOD; - } else - ret = FSFATAL; + if (fat[boot->bpbRootClust].head != boot->bpbRootClust) { + pfatal("Root directory doesn't start a cluster chain"); + return FSFATAL; } fat[boot->bpbRootClust].flags |= FAT_USED; -- cgit v1.2.3