From 2888f601ffe196f66d966818fc98f34952bbb3ea Mon Sep 17 00:00:00 2001 From: ParantezTech <12572227+par274@users.noreply.github.com> Date: Mon, 3 Aug 2026 09:52:57 +0300 Subject: [PATCH] [videoout] guard degenerate guest buffer ranges --- src/SharpEmu.Libs/VideoOut/VulkanVideoPresenter.cs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/SharpEmu.Libs/VideoOut/VulkanVideoPresenter.cs b/src/SharpEmu.Libs/VideoOut/VulkanVideoPresenter.cs index 7c8d2ef..b9ca23a 100644 --- a/src/SharpEmu.Libs/VideoOut/VulkanVideoPresenter.cs +++ b/src/SharpEmu.Libs/VideoOut/VulkanVideoPresenter.cs @@ -10179,7 +10179,12 @@ internal static unsafe class VulkanVideoPresenter } var size = (ulong)Math.Max(guestBuffer.Length, sizeof(uint)); - var endAddress = checked(guestBuffer.BaseAddress + size); + if (guestBuffer.BaseAddress > ulong.MaxValue - size) + { + return CreateTransientGlobalBufferResource(guestBuffer); + } + + var endAddress = guestBuffer.BaseAddress + size; GuestBufferAllocation? allocation = null; foreach (var candidate in _guestBufferAllocations) { @@ -10414,9 +10419,14 @@ internal static unsafe class VulkanVideoPresenter } var size = (ulong)Math.Max(buffer.Length, sizeof(uint)); + if (buffer.BaseAddress > ulong.MaxValue - size - 3) + { + continue; + } + var alignedStart = buffer.BaseAddress & ~(GuestStorageBufferOffsetAlignment - 1); - var paddedEnd = checked(buffer.BaseAddress + size + 3) & ~3UL; + var paddedEnd = (buffer.BaseAddress + size + 3) & ~3UL; ranges.Add(( alignedStart, paddedEnd));