summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSan Mehat <san@google.com>2009-06-27 09:36:53 -0700
committerSan Mehat <san@google.com>2009-06-27 09:36:53 -0700
commitb47b16353f3db228711dded9f7c975b820059ddc (patch)
tree9868d86c0458655f5c4b9081d32bbf22676b6d26
parentd8775a29ea7eac2e5f1504dd21da3725b93b3036 (diff)
downloadandroid_external_fsck_msdos-b47b16353f3db228711dded9f7c975b820059ddc.tar.gz
android_external_fsck_msdos-b47b16353f3db228711dded9f7c975b820059ddc.tar.bz2
android_external_fsck_msdos-b47b16353f3db228711dded9f7c975b820059ddc.zip
fsck_msdos: Don't bail out when we find a FAT32 bootblock miscompare.
Some factory formatted sdcards seem to have a garbage backup block. Signed-off-by: San Mehat <san@google.com>
-rw-r--r--boot.c34
1 files changed, 28 insertions, 6 deletions
diff --git a/boot.c b/boot.c
index dc2bea9..54d800f 100644
--- a/boot.c
+++ b/boot.c
@@ -161,12 +161,34 @@ readboot(dosfs, boot)
}
backup[65] = block[65]; /* XXX */
if (memcmp(block + 11, backup + 11, 79)) {
- /* Correct? XXX */
- pfatal("backup doesn't compare to primary bootblock");
- if (alwaysno)
- pfatal("\n");
- else
- return FSFATAL;
+ char tmp[255];
+ int i;
+
+ /*
+ * For now, lets not bail out if they don't match
+ * It seems a lot of sdcards are formatted with
+ * the backup either empty or containing garbage.
+ */
+
+ pwarn("Primary/Backup bootblock miscompare\n");
+
+ strcpy(tmp, "");
+ pwarn("Primary:\n");
+ for (i = 0; i < 79; i++) {
+ char tmp2[16];
+ snprintf(tmp2, sizeof(tmp2), "%.2x ", block[11 + i]);
+ strcat(tmp, tmp2);
+ }
+ pwarn("%s\n", tmp);
+
+ strcpy(tmp, "");
+ pwarn("Backup:\n");
+ for (i = 0; i < 79; i++) {
+ char tmp2[16];
+ snprintf(tmp2, sizeof(tmp2), "%.2x ", backup[11 + i]);
+ strcat(tmp, tmp2);
+ }
+ pwarn("%s\n", tmp);
}
/* Check backup FSInfo? XXX */
}