diff options
author | San Mehat <san@google.com> | 2009-06-27 09:36:53 -0700 |
---|---|---|
committer | San Mehat <san@google.com> | 2009-06-27 09:36:53 -0700 |
commit | b47b16353f3db228711dded9f7c975b820059ddc (patch) | |
tree | 9868d86c0458655f5c4b9081d32bbf22676b6d26 /boot.c | |
parent | d8775a29ea7eac2e5f1504dd21da3725b93b3036 (diff) | |
download | android_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>
Diffstat (limited to 'boot.c')
-rw-r--r-- | boot.c | 34 |
1 files changed, 28 insertions, 6 deletions
@@ -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 */ } |