Skip to content

Commit c91bc10

Browse files
committed
DevLsiLogicSCSI: Reworked fragment address calculation to avoid potential underflow (see bugref:11121).
svn:sync-xref-src-repo-rev: r174568
1 parent e4bd3ed commit c91bc10

1 file changed

Lines changed: 3 additions & 3 deletions

File tree

src/VBox/Devices/Storage/DevLsiLogicSCSI.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* $Id: DevLsiLogicSCSI.cpp 113804 2026-04-10 09:44:38Z michal.necasek@oracle.com $ */
1+
/* $Id: DevLsiLogicSCSI.cpp 114731 2026-07-20 09:16:25Z michal.necasek@oracle.com $ */
22
/** @file
33
* DevLsiLogicSCSI - LsiLogic LSI53c1030 SCSI controller.
44
*/
@@ -2015,7 +2015,7 @@ static size_t lsilogicSgBufWalker(PPDMDEVINS pDevIns, PLSILOGICREQ pLsiReq,
20152015
{
20162016
bool fEndOfList = false;
20172017
RTGCPHYS GCPhysSgEntryNext = pLsiReq->GCPhysSgStart;
2018-
RTGCPHYS GCPhysSegmentStart = pLsiReq->GCPhysSgStart;
2018+
RTGCPHYS GCPhysSegmentStart = pLsiReq->GCPhysMessageFrameAddr;
20192019
uint32_t cChainOffsetNext = pLsiReq->cChainOffset;
20202020
size_t cbCopied = 0;
20212021

@@ -2312,7 +2312,7 @@ static int lsilogicR3ProcessSCSIIORequest(PPDMDEVINS pDevIns, PLSILOGICSCSI pThi
23122312
pLsiReq->GCPhysSgStart = GCPhysMessageFrameAddr + sizeof(MptSCSIIORequest);
23132313
pLsiReq->cChainOffset = pGuestReq->SCSIIO.u8ChainOffset;
23142314
if (pLsiReq->cChainOffset)
2315-
pLsiReq->cChainOffset = pLsiReq->cChainOffset * sizeof(uint32_t) - sizeof(MptSCSIIORequest);
2315+
pLsiReq->cChainOffset = pLsiReq->cChainOffset * sizeof(uint32_t);
23162316
memcpy(&pLsiReq->GuestRequest, pGuestReq, sizeof(MptRequestUnion));
23172317
RT_BZERO(&pLsiReq->abSenseBuffer[0], sizeof(pLsiReq->abSenseBuffer));
23182318

0 commit comments

Comments
 (0)