Changeset 75754 in vbox
- Timestamp:
- Nov 27, 2018 12:53:03 AM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/VMMDev/VMMDevHGCM.cpp
r75740 r75754 591 591 uint8_t *pu8Src = (uint8_t *)pvSrc; 592 592 uint32_t offPage = pPtr->offFirstPage; 593 uint32_t cbRemaining = cbSrc;593 uint32_t cbRemaining = RT_MIN(cbSrc, pPtr->cbData); 594 594 595 595 uint32_t iPage; … … 1206 1206 case VMMDevHGCMParmType_PageList: 1207 1207 { 1208 /** @todo Update the return buffer size. */ 1208 1209 const VBOXHGCMPARMPTR * const pPtr = &pGuestParm->u.ptr; 1209 1210 if ( pPtr->cbData > 0 … … 1219 1220 case VMMDevHGCMParmType_Embedded: 1220 1221 { 1222 /** @todo Update the return buffer size! */ 1221 1223 const VBOXHGCMPARMPTR * const pPtr = &pGuestParm->u.ptr; 1222 1224 if ( pPtr->cbData > 0 1223 1225 && (pPtr->fu32Direction & VBOX_HGCM_F_PARM_DIRECTION_FROM_HOST)) 1224 1226 { 1225 const void *pvSrc = pHostParm->u.pointer.addr; 1226 uint32_t cbSrc = pHostParm->u.pointer.size; 1227 const void *pvSrc = pHostParm->u.pointer.addr; 1228 uint32_t cbSrc = pHostParm->u.pointer.size; 1229 uint32_t cbToCopy = RT_MIN(cbSrc, pPtr->cbData); 1227 1230 if (pCmd->pvReqLocked) 1228 memcpy((uint8_t *)pCmd->pvReqLocked + pPtr->offFirstPage, pvSrc, cb Src);1231 memcpy((uint8_t *)pCmd->pvReqLocked + pPtr->offFirstPage, pvSrc, cbToCopy); 1229 1232 else 1230 rc = PDMDevHlpPhysWrite(pThis->pDevInsR3, pGuestParm->u.ptr.GCPhysSinglePage, pvSrc, cb Src);1233 rc = PDMDevHlpPhysWrite(pThis->pDevInsR3, pGuestParm->u.ptr.GCPhysSinglePage, pvSrc, cbToCopy); 1231 1234 } 1232 1235 break;
Note:
See TracChangeset
for help on using the changeset viewer.