summaryrefslogtreecommitdiff
path: root/src/VBox/Runtime/common/fs/isomaker.cpp
diff options
context:
space:
mode:
authorvboxsync <vboxsync@cfe28804-0f27-0410-a406-dd0f0b0b656f>2017-09-22 13:32:01 +0000
committervboxsync <vboxsync@cfe28804-0f27-0410-a406-dd0f0b0b656f>2017-09-22 13:32:01 +0000
commit3a8cc0e7f64dae15654bedb916a1a12db0696caf (patch)
tree8b799d550a4e1695cdda168bac845ee96954d49e /src/VBox/Runtime/common/fs/isomaker.cpp
parentd5d1aa94837e876be626e5b53906c4889375aab4 (diff)
downloadVirtualBox-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.cpp14
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);
}