VirtualBox

Changeset 68826 in vbox


Ignore:
Timestamp:
Sep 22, 2017 1:32:01 PM (8 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
118080
Message:

iprt/isomaker: fixed rock ridge padding bug

File:
1 edited

Legend:

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

    r68817 r68826  
    246246    /** Rock ridge flags (ISO9660RRIP_RR_F_XXX). */
    247247    uint8_t                 fRockEntries;
    248     /** Number of rock ridge data bytes in the directory record. */
     248    /** Number of rock ridge data bytes in the directory record.  Unaligned! */
    249249    uint8_t                 cbRockInDirRec;
    250250    /** Rock ridge spill file data offset, UINT32_MAX if placed in dir record. */
     
    46594659            if (pName->cbDirRec + cbRock < UINT8_MAX)
    46604660            {
    4661                 pName->cbRockInDirRec      = cbRock + (cbRock & 1);
     4661                pName->cbRockInDirRec      = cbRock;
    46624662                pName->cbRockSpill         = 0;
    46634663                pName->fRockNeedRRInDirRec = uRockRidgeLevel >= 2;
     
    46694669                if (uRockRidgeLevel >= 2 && pName->cbDirRec + sizeof(ISO9660SUSPCE) + sizeof(ISO9660RRIPRR) < UINT8_MAX)
    46704670                {
    4671                     pName->cbRockInDirRec      = RT_ALIGN_T(sizeof(ISO9660SUSPCE) + sizeof(ISO9660RRIPRR), 2, uint16_t);
     4671                    pName->cbRockInDirRec      = (uint16_t)(sizeof(ISO9660SUSPCE) + sizeof(ISO9660RRIPRR));
    46724672                    cbRock -= sizeof(ISO9660RRIPRR);
    46734673                    pName->cbRockSpill         = cbRock;
     
    46774677                else
    46784678                {
    4679                     pName->cbRockInDirRec      = RT_ALIGN_T(sizeof(ISO9660SUSPCE), 2, uint16_t);
     4679                    pName->cbRockInDirRec      = (uint16_t)sizeof(ISO9660SUSPCE);
    46804680                    pName->cbRockSpill         = cbRock;
    46814681                    pName->fRockNeedRRInDirRec = false;
     
    47024702                cbRock += sizeof(ISO9660SUSPSP);
    47034703                Assert(pName->cbDirRec + cbRock < UINT8_MAX);
    4704                 pName->cbRockInDirRec       = cbRock + (cbRock & 1);
     4704                pName->cbRockInDirRec       = cbRock ;
    47054705                pName->cbRockSpill          = 0;
    47064706                pName->fRockNeedER          = false;
     
    47104710            else
    47114711            {
    4712                 pName->cbRockInDirRec       = RT_ALIGN_T(sizeof(ISO9660SUSPSP) + sizeof(ISO9660SUSPCE), 2, uint16_t);
     4712                pName->cbRockInDirRec       = (uint16_t)(sizeof(ISO9660SUSPSP) + sizeof(ISO9660SUSPCE));
    47134713                pName->fRockNeedER          = true;
    47144714                pName->fRockNeedRRInSpill   = true;
     
    47194719            }
    47204720        }
    4721         pName->cbDirRec += pName->cbRockInDirRec;
     4721        pName->cbDirRec += pName->cbRockInDirRec + (pName->cbRockInDirRec & 1);
    47224722        Assert(pName->cbDirRec < UINT8_MAX);
    47234723    }
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