VirtualBox

Changeset 94279 in vbox for trunk/src/VBox/Runtime/common/fs


Ignore:
Timestamp:
Mar 17, 2022 1:34:09 AM (3 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
150543
Message:

IPRT/isomakerimport.cpp: A couple of rock ridge parsing corrections.

File:
1 edited

Legend:

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

    r93350 r94279  
    179179    /** Symlink target name buffer for rock ridge.  */
    180180    char                szRockSymlinkTargetBuf[_2K];
    181     /** A buffer for reading rock ridge continuation blocks into  */
     181    /** A buffer for reading rock ridge continuation blocks into. */
    182182    uint8_t             abRockBuf[ISO9660_SECTOR_SIZE];
    183183    /** @} */
     
    641641    RT_NOREF(pObjInfo);
    642642
    643     /*
    644      * Do skipping if specified.
    645      */
    646     if (pThis->offSuspSkip)
    647     {
    648         if (cbSys <= pThis->offSuspSkip)
    649             return;
    650         pbSys += pThis->offSuspSkip;
    651         cbSys -= pThis->offSuspSkip;
    652     }
    653 
    654643    while (cbSys >= 4)
    655644    {
     
    658647         */
    659648        PCISO9660SUSPUNION pUnion = (PCISO9660SUSPUNION)pbSys;
    660         if (pUnion->Hdr.cbEntry > cbSys)
     649        if (   pUnion->Hdr.cbEntry > cbSys
     650            && pUnion->Hdr.cbEntry < sizeof(pUnion->Hdr))
    661651        {
    662652            LogRel(("rtFsIsoImportProcessIso9660TreeWorkerParseRockRidge: cbEntry=%#x cbSys=%#x (%#x %#x)\n",
     
    10141004
    10151005                    /* Purge the encoding as we don't want invalid UTF-8 floating around. */
     1006                    /** @todo do this afterwards as needed. */
    10161007                    RTStrPurgeEncoding(pThis->szRockSymlinkTargetBuf);
    10171008                }
     
    10361027                    if (pUnion->NM.fFlags & (ISO9660RRIP_NM_F_CURRENT | ISO9660RRIP_NM_F_PARENT))
    10371028                    {
    1038                         if (cchName == 0 && pThis->szRockNameBuf[0] == '\0')
     1029                        if (cchName == 0)
    10391030                            Log(("rtFsIsoImport/Rock: Ignoring 'NM' entry for '.' and '..'\n"));
    10401031                        else
     
    10531044
    10541045                            /* Purge the encoding as we don't want invalid UTF-8 floating around. */
    1055                             RTStrPurgeEncoding(pThis->szRockSymlinkTargetBuf);
     1046                            /** @todo do this afterwards as needed. */
     1047                            RTStrPurgeEncoding(pThis->szRockNameBuf);
    10561048                        }
    10571049                        else
     
    14831475            pThis->szRockNameBuf[0] = '\0';
    14841476            pThis->szRockSymlinkTargetBuf[0] = '\0';
    1485             if (cbSys > 0 && !(pThis->fFlags & RTFSISOMK_IMPORT_F_NO_ROCK_RIDGE))
     1477            if (   cbSys > pThis->offSuspSkip
     1478                && !(pThis->fFlags & RTFSISOMK_IMPORT_F_NO_ROCK_RIDGE))
    14861479            {
    14871480                pThis->fSeenLastNM               = false;
     
    14891482                pThis->szRockNameBuf[0]          = '\0';
    14901483                pThis->szRockSymlinkTargetBuf[0] = '\0';
    1491                 rtFsIsoImportProcessIso9660TreeWorkerParseRockRidge(pThis, &ObjInfo, pbSys, cbSys, fUnicode,
     1484                rtFsIsoImportProcessIso9660TreeWorkerParseRockRidge(pThis, &ObjInfo, &pbSys[pThis->offSuspSkip],
     1485                                                                    cbSys - pThis->offSuspSkip, fUnicode,
    14921486                                                                    false /*fContinuationRecord*/, false /*fIsFirstDirRec*/);
    14931487            }
Note: See TracChangeset for help on using the changeset viewer.

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