mirror of
https://github.com/par274/sharpemu.git
synced 2026-08-07 10:29:46 +08:00
[videoout] guard degenerate guest buffer ranges (#755)
This commit is contained in:
@@ -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));
|
||||
|
||||
Reference in New Issue
Block a user