Fix integer overflow in vkAllocateMemory.
Bug: b/223394608
Test:
dEQP-VK.memory.device_memory_report.vk_device_memory#allocation_failed
Change-Id: I5222a665eb28b755af79e5ad746d66583037d916
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/64188
Kokoro-Result: kokoro <noreply+kokoro@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
Tested-by: Joshua Duong <joshuaduong@google.com>
Commit-Queue: Joshua Duong <joshuaduong@google.com>
diff --git a/src/Vulkan/VkDeviceMemory.cpp b/src/Vulkan/VkDeviceMemory.cpp
index 4cf4688..a366661 100644
--- a/src/Vulkan/VkDeviceMemory.cpp
+++ b/src/Vulkan/VkDeviceMemory.cpp
@@ -109,6 +109,10 @@
VkMemoryAllocateInfo allocateInfo = *pAllocateInfo;
// Add 15 bytes of padding to ensure that any type of attribute within
// buffers and images can be read using 16-byte accesses.
+ if(allocateInfo.allocationSize > UINT64_MAX - 15)
+ {
+ return VK_ERROR_OUT_OF_DEVICE_MEMORY;
+ }
allocateInfo.allocationSize += 15;
#if SWIFTSHADER_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER