diff options
| author | vboxsync <vboxsync@cfe28804-0f27-0410-a406-dd0f0b0b656f> | 2017-09-22 13:32:01 +0000 |
|---|---|---|
| committer | vboxsync <vboxsync@cfe28804-0f27-0410-a406-dd0f0b0b656f> | 2017-09-22 13:32:01 +0000 |
| commit | 3a8cc0e7f64dae15654bedb916a1a12db0696caf (patch) | |
| tree | 8b799d550a4e1695cdda168bac845ee96954d49e /src/VBox/Runtime/common/fs/isomaker.cpp | |
| parent | d5d1aa94837e876be626e5b53906c4889375aab4 (diff) | |
| download | VirtualBox-svn-3a8cc0e7f64dae15654bedb916a1a12db0696caf.tar.gz | |
iprt/isomaker: fixed rock ridge padding bug
git-svn-id: https://www.virtualbox.org/svn/vbox/trunk@68826 cfe28804-0f27-0410-a406-dd0f0b0b656f
Diffstat (limited to 'src/VBox/Runtime/common/fs/isomaker.cpp')
| -rw-r--r-- | src/VBox/Runtime/common/fs/isomaker.cpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/VBox/Runtime/common/fs/isomaker.cpp b/src/VBox/Runtime/common/fs/isomaker.cpp index f106f7f1191..452172db836 100644 --- a/src/VBox/Runtime/common/fs/isomaker.cpp +++ b/src/VBox/Runtime/common/fs/isomaker.cpp @@ -245,7 +245,7 @@ typedef struct RTFSISOMAKERNAME /** Rock ridge flags (ISO9660RRIP_RR_F_XXX). */ uint8_t fRockEntries; - /** Number of rock ridge data bytes in the directory record. */ + /** Number of rock ridge data bytes in the directory record. Unaligned! */ uint8_t cbRockInDirRec; /** Rock ridge spill file data offset, UINT32_MAX if placed in dir record. */ uint32_t offRockSpill; @@ -4658,7 +4658,7 @@ static int rtFsIsoMakerFinalizeIsoDirectoryEntry(PRTFSISOMAKERFINALIZEDDIRS pFin { if (pName->cbDirRec + cbRock < UINT8_MAX) { - pName->cbRockInDirRec = cbRock + (cbRock & 1); + pName->cbRockInDirRec = cbRock; pName->cbRockSpill = 0; pName->fRockNeedRRInDirRec = uRockRidgeLevel >= 2; pName->fRockNeedRRInSpill = false; @@ -4668,7 +4668,7 @@ static int rtFsIsoMakerFinalizeIsoDirectoryEntry(PRTFSISOMAKERFINALIZEDDIRS pFin /* Try fit the 'RR' entry in the directory record, but don't bother with anything else. */ if (uRockRidgeLevel >= 2 && pName->cbDirRec + sizeof(ISO9660SUSPCE) + sizeof(ISO9660RRIPRR) < UINT8_MAX) { - pName->cbRockInDirRec = RT_ALIGN_T(sizeof(ISO9660SUSPCE) + sizeof(ISO9660RRIPRR), 2, uint16_t); + pName->cbRockInDirRec = (uint16_t)(sizeof(ISO9660SUSPCE) + sizeof(ISO9660RRIPRR)); cbRock -= sizeof(ISO9660RRIPRR); pName->cbRockSpill = cbRock; pName->fRockNeedRRInDirRec = true; @@ -4676,7 +4676,7 @@ static int rtFsIsoMakerFinalizeIsoDirectoryEntry(PRTFSISOMAKERFINALIZEDDIRS pFin } else { - pName->cbRockInDirRec = RT_ALIGN_T(sizeof(ISO9660SUSPCE), 2, uint16_t); + pName->cbRockInDirRec = (uint16_t)sizeof(ISO9660SUSPCE); pName->cbRockSpill = cbRock; pName->fRockNeedRRInDirRec = false; pName->fRockNeedRRInSpill = uRockRidgeLevel >= 2; @@ -4701,7 +4701,7 @@ static int rtFsIsoMakerFinalizeIsoDirectoryEntry(PRTFSISOMAKERFINALIZEDDIRS pFin Assert(!(fFlags & (ISO9660RRIP_RR_F_NM | ISO9660RRIP_RR_F_SL | ISO9660RRIP_RR_F_CL | ISO9660RRIP_RR_F_PL | ISO9660RRIP_RR_F_RE))); cbRock += sizeof(ISO9660SUSPSP); Assert(pName->cbDirRec + cbRock < UINT8_MAX); - pName->cbRockInDirRec = cbRock + (cbRock & 1); + pName->cbRockInDirRec = cbRock ; pName->cbRockSpill = 0; pName->fRockNeedER = false; pName->fRockNeedRRInDirRec = false; @@ -4709,7 +4709,7 @@ static int rtFsIsoMakerFinalizeIsoDirectoryEntry(PRTFSISOMAKERFINALIZEDDIRS pFin } else { - pName->cbRockInDirRec = RT_ALIGN_T(sizeof(ISO9660SUSPSP) + sizeof(ISO9660SUSPCE), 2, uint16_t); + pName->cbRockInDirRec = (uint16_t)(sizeof(ISO9660SUSPSP) + sizeof(ISO9660SUSPCE)); pName->fRockNeedER = true; pName->fRockNeedRRInSpill = true; pName->fRockNeedRRInDirRec = false; @@ -4718,7 +4718,7 @@ static int rtFsIsoMakerFinalizeIsoDirectoryEntry(PRTFSISOMAKERFINALIZEDDIRS pFin pName->offRockSpill = rtFsIsoMakerFinalizeAllocRockRidgeSpill(pFinalizedDirs->pRRSpillFile, cbRock); } } - pName->cbDirRec += pName->cbRockInDirRec; + pName->cbDirRec += pName->cbRockInDirRec + (pName->cbRockInDirRec & 1); Assert(pName->cbDirRec < UINT8_MAX); } |
