VirtualBox

Changeset 69619 in vbox


Ignore:
Timestamp:
Nov 8, 2017 3:46:10 PM (7 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
118979
Message:

fatvfs: Relaxed idxEndOfChain (FAT entry #2) checks.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/common/fs/fatvfs.cpp

    r69616 r69619  
    50125012        return RTErrInfoSetF(pErrInfo, VERR_VFS_BOGUS_FORMAT,
    50135013                             "Media byte and FAT ID mismatch: %#x vs %#x (%.7Rhxs)", pbFatSector[0], pThis->bMedia, pbFatSector);
     5014    uint32_t idxOurEndOfChain;
    50145015    switch (pThis->enmFatType)
    50155016    {
     
    50195020            pThis->idxMaxLastCluster = FAT_LAST_FAT12_DATA_CLUSTER;
    50205021            pThis->idxEndOfChain     = (pbFatSector[1] >> 4) | ((uint32_t)pbFatSector[2] << 4);
     5022            idxOurEndOfChain         = FAT_FIRST_FAT12_EOC;
    50215023            break;
    50225024
     
    50265028            pThis->idxMaxLastCluster = FAT_LAST_FAT16_DATA_CLUSTER;
    50275029            pThis->idxEndOfChain     = RT_MAKE_U16(pbFatSector[2], pbFatSector[3]);
     5030            idxOurEndOfChain         = FAT_FIRST_FAT16_EOC;
    50285031            break;
    50295032
     
    50355038            pThis->idxMaxLastCluster = FAT_LAST_FAT32_DATA_CLUSTER;
    50365039            pThis->idxEndOfChain     = RT_MAKE_U32_FROM_U8(pbFatSector[4], pbFatSector[5], pbFatSector[6], pbFatSector[7]);
     5040            idxOurEndOfChain         = FAT_FIRST_FAT32_EOC;
    50375041            break;
    50385042
    50395043        default: AssertFailedReturn(VERR_INTERNAL_ERROR_2);
    50405044    }
     5045
    50415046    if (pThis->idxEndOfChain <= pThis->idxMaxLastCluster)
    5042         return RTErrInfoSetF(pErrInfo, VERR_VFS_BOGUS_FORMAT, "Bogus formatter end-of-chain value: %#x, must be above %#x",
    5043                              pThis->idxEndOfChain, pThis->idxMaxLastCluster);
     5047    {
     5048        Log(("rtFsFatVolTryInitDos2Plus: Bogus idxEndOfChain=%#x, using %#x instead\n", pThis->idxEndOfChain, idxOurEndOfChain));
     5049        pThis->idxEndOfChain = idxOurEndOfChain;
     5050    }
    50445051
    50455052    RT_NOREF(pbFatSector);
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette