genode/repos/ports/src/virtualbox5/patches/vga.patch

27 lines
1.4 KiB
Diff

--- a/src/app/virtualbox/src/VBox/Devices/Graphics/DevVGA_VBVA.cpp
+++ b/src/app/virtualbox/src/VBox/Devices/Graphics/DevVGA_VBVA.cpp
@@ -2249,12 +2249,23 @@
const uint64_t u64ScreenSize = (uint64_t)screen.u32LineSize * screen.u32Height;
+ if (!( screen.u32StartOffset <= pView->u32ViewSize
+ && u64ScreenSize <= pView->u32MaxScreenSize
+ && screen.u32StartOffset <= pView->u32ViewSize - (uint32_t)u64ScreenSize))
+ {
+ RTLogPrintf("%s - assertion failed - u32StartOffset=%#x u32ViewSize=%#x u64ScreenSize=%#RX64 u32MaxScreenSize=%#x",
+ __func__, screen.u32StartOffset, pView->u32ViewSize, u64ScreenSize, pView->u32MaxScreenSize);
+#if 0
ASSERT_GUEST_LOGREL_MSG_RETURN( screen.u32StartOffset <= pView->u32ViewSize
&& u64ScreenSize <= pView->u32MaxScreenSize
&& screen.u32StartOffset <= pView->u32ViewSize - (uint32_t)u64ScreenSize,
("u32StartOffset=%#x u32ViewSize=%#x u64ScreenSize=%#RX64 u32MaxScreenSize=%#x\n",
screen.u32StartOffset, pView->u32ViewSize, u64ScreenSize, pView->u32MaxScreenSize),
VERR_INVALID_PARAMETER);
+#endif
+ return VERR_INVALID_PARAMETER;
+ }
+
RT_UNTRUSTED_VALIDATED_FENCE();
/*