VirtualBox

Ticket #21326: patch.txt

File patch.txt, 1.9 KB (added by pv32768, 2 years ago)
Line 
1diff -Naur a/src/VBox/Devices/Graphics/DevVGA-SVGA3d.cpp b/src/VBox/Devices/Graphics/DevVGA-SVGA3d.cpp
2--- a/src/VBox/Devices/Graphics/DevVGA-SVGA3d.cpp 2022-11-17 22:12:55.000000000 +0300
3+++ b/src/VBox/Devices/Graphics/DevVGA-SVGA3d.cpp 2022-12-05 16:06:25.417632425 +0300
4@@ -1093,6 +1093,8 @@
5
6 VMSVGASCREENOBJECT *pScreen = &pSvgaR3State->aScreens[idDstScreen];
7
8+ uint32_t const cbScreenPixel = RT_ALIGN(pScreen->cBpp, 8) / 8;
9+
10 if ( srcRect.right <= srcRect.left
11 || srcRect.bottom <= srcRect.top)
12 return VINF_SUCCESS; /* Empty src rect. */
13@@ -1186,6 +1188,8 @@
14 + ((box.x + pSurface->cxBlock - 1) / pSurface->cxBlock) * pSurface->cxBlock * pSurface->cbBlock
15 + ((box.y + pSurface->cyBlock - 1) / pSurface->cyBlock) * pSurface->cyBlock * srcMap.cbRowPitch;
16
17+ uint32_t const offDstBox = (dstBox.x + box.x) * cbScreenPixel + (dstBox.y + box.y) * pScreen->cbPitch;
18+
19 /* The 'box' is actually in the destination coordinates relative to the top-left corner of destRect.
20 * Therefore it is relative to the top-left corner of srcRect as well.
21 */
22@@ -1198,11 +1202,11 @@
23 {
24 AssertContinue(srcDims.cyBlocks > 0);
25
26- ASSERT_GUEST_BREAK( srcDims.offBox <= cbDst
27- && pScreen->cbPitch * (srcDims.cyBlocks - 1) + srcDims.cbRow <= cbDst - srcDims.offBox);
28+ ASSERT_GUEST_BREAK( offDstBox <= cbDst
29+ && pScreen->cbPitch * (srcDims.cyBlocks - 1) + srcDims.cbRow <= cbDst - offDstBox);
30 RT_UNTRUSTED_VALIDATED_FENCE();
31
32- uint8_t *pu8DstBox = pu8Dst + srcDims.offBox;
33+ uint8_t *pu8DstBox = pu8Dst + offDstBox;
34
35 if ( pSurface->format == SVGA3D_R8G8B8A8_UNORM
36 || pSurface->format == SVGA3D_R8G8B8A8_UNORM_SRGB)

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette