Sync with upstream b60894b (svn revision 356657):
b60894b1: Tighten FAT checks and fix off-by-one error in corner case.
- readfat:
* Only truncate out-of-range cluster pointers (1, or greater than
NumClusters but smaller than CLUST_RSRVD), as the current cluster
may contain some data. We can't fix reserved cluster pointers at
this pass, because we do no know the potential cluster preceding
it.
* Accept valid cluster for head bitmap. This is a no-op, and mainly
to improve code readability, because the 1 is already handled in
the previous else if block.
- truncate_at: absorbed into checkchain.
- checkchain: save the previous node we have traversed in case that we
have a chain that ends with a special (>= CLUST_RSRVD) cluster, or is
free. In these cases, we need to truncate at the cluster preceding the
current cluster, as the current cluster contains a marker instead of
a next pointer and can not be changed to CLUST_EOF (the else case can
happen if the user answered "no" at some point in readfat()).
- clearchain: correct the iterator for next cluster so that we don't
stop after clearing the first cluster.
- checklost: If checkchain() thinks the chain have no cluster, it
doesn't make sense to reconnect it, so don't bother asking.
27b822d4: Correct off-by-two issue when determining FAT type.
77000233: Typo fix from NetBSD.
d705f2ff: Require FAT to occupy at least one sector. (aosp/1205830)
0371742d: (manual update, not applicable to Android)
Test: build
Change-Id: I6f1e42a4632eabfbb93ba9f64ec2c959b15985ab