1
0
Fork 0
forked from len0rd/rockbox

Consider sector size when checking cluster size

On file systems with 2048 bytes per cluster, the bpb_secperclus value
gets multiplied by 4 when the meta data is loaded. This patch changes
the sanity check to consider (and reverse) that multiplication before
checking the cluster size.

Signed-off-by: Stefan Ott <stefan@ott.net>
This commit is contained in:
Stefan Ott 2020-04-04 01:34:33 +02:00 committed by Solomon Peachy
parent 180cef835b
commit 63bf8e4acd

View file

@ -391,7 +391,12 @@ static int bpb_is_sane(struct bpb *fat_bpb)
return -1;
}
if (fat_bpb->bpb_secperclus * fat_bpb->bpb_bytspersec > 128*1024ul)
/* The fat_bpb struct does not hold the raw value of bpb_bytspersec, the
* value is multiplied in cases where bpb_bytspersec != SECTOR_SIZE. We need
* to undo that multiplication before we do the sanity check. */
unsigned long secmult = fat_bpb->bpb_bytspersec / SECTOR_SIZE;
if (fat_bpb->bpb_secperclus * fat_bpb->bpb_bytspersec / secmult > 128*1024ul)
{
DEBUGF("%s() - Error: cluster size is larger than 128K "
"(%lu * %lu = %lu)\n", __func__,