diff options
author | Ricardo Cerqueira <cyanogenmod@cerqueira.org> | 2013-11-01 16:04:19 +0000 |
---|---|---|
committer | Ricardo Cerqueira <cyanogenmod@cerqueira.org> | 2013-11-01 16:04:19 +0000 |
commit | d10e31b579d487e459183cbc004e844a8de20379 (patch) | |
tree | 488fa6253f8375fc8271b9e18234ad708b4a5a24 | |
parent | 437424c4f16a30e306a936854fac2032f072a271 (diff) | |
parent | c0a43e474789a92f91930a1c875eb7ce48e335c8 (diff) | |
download | android_external_fsck_msdos-shipping/cm-11.0.tar.gz android_external_fsck_msdos-shipping/cm-11.0.tar.bz2 android_external_fsck_msdos-shipping/cm-11.0.zip |
Merge tag 'android-4.4_r1' into cm-11.0cm-11.0-XNPH44S-bacon-5fa8c79c0bcm-11.0-XNPH33R-bacon-3628510d76cm-11.0-XNPH30O-bacon-4f280f505acm-11.0-XNPH25R-bacon-d22b777afacm-11.0-XNPH22R-bacon-03d77315eacm-11.0-XNPH05Q-tomato-9828f8e9cccm-11.0-XNPH05Q-bacon-5229c4ef56stable/cm-11.0-XNG3Cstable/cm-11.0-XNG2Sstable/cm-11.0-XNF9Xstable/cm-11.0-XNF8Ystable/cm-11.0shipping/cm-11.0cm-11.0
Android 4.4 Release 1.0
-rw-r--r-- | boot.c | 19 |
1 files changed, 19 insertions, 0 deletions
@@ -106,6 +106,25 @@ readboot(dosfs, boot) boot->FSInfo = block[48] + (block[49] << 8); boot->Backup = block[50] + (block[51] << 8); + /* If the OEM Name field is EXFAT, it's not FAT32, so bail */ + if (!memcmp(&block[3], "EXFAT ", 8)) { + pfatal("exFAT filesystem is not supported."); + return FSFATAL; + } + + /* check basic parameters */ + if ((boot->FSInfo == 0) || + (boot->BytesPerSec % DOSBOOTBLOCKSIZE != 0) || + (boot->BytesPerSec / DOSBOOTBLOCKSIZE == 0) || + (boot->SecPerClust == 0)) { + /* + * Either the BIOS Parameter Block has been corrupted, + * or this is not a FAT32 filesystem, most likely an + * exFAT filesystem. + */ + pfatal("Invalid FAT32 Extended BIOS Parameter Block"); + return FSFATAL; + } if (lseek(dosfs, boot->FSInfo * boot->BytesPerSec, SEEK_SET) != boot->FSInfo * boot->BytesPerSec || read(dosfs, fsinfo, sizeof fsinfo) |