From 65f79be5f7dce29a265aae4ef0e1ec16d2b4eabb Mon Sep 17 00:00:00 2001 From: Ioannis Assiouras Date: Thu, 22 Dec 2022 09:51:12 +0000 Subject: [PATCH] SWDEV-374355, SWDEV-374356, SWDEV-374357, SWDEV-374358, SWDEV-374359 - Added input sanity checks to hipExternalMemoryGetMappedBuffer Change-Id: I61e43dece3fb9bd961e92db8e015f08170327538 [ROCm/clr commit: 99d2d016c197bcbbe6b625638896b2e852debbe3] --- projects/clr/hipamd/src/hip_memory.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/projects/clr/hipamd/src/hip_memory.cpp b/projects/clr/hipamd/src/hip_memory.cpp index 1a6272c7f9..7e24fa2e65 100644 --- a/projects/clr/hipamd/src/hip_memory.cpp +++ b/projects/clr/hipamd/src/hip_memory.cpp @@ -150,14 +150,16 @@ hipError_t hipExternalMemoryGetMappedBuffer( const hipExternalMemoryBufferDesc *bufferDesc) { HIP_INIT_API(hipExternalMemoryGetMappedBuffer, devPtr, extMem, bufferDesc); - if (extMem == nullptr) { + if (devPtr == nullptr || extMem == nullptr || bufferDesc == nullptr || bufferDesc->flags != 0) { HIP_RETURN(hipErrorInvalidValue); } amd::BufferVk *buf = reinterpret_cast(extMem); const device::Memory* devMem = buf->getDeviceMemory(*hip::getCurrentDevice()->devices()[0]); - if (devMem != nullptr) { - *devPtr = reinterpret_cast(devMem->virtualAddress()); + + if (devMem == nullptr || ((bufferDesc->offset + bufferDesc->size) > devMem->size())) { + HIP_RETURN(hipErrorInvalidValue); } + *devPtr = reinterpret_cast(devMem->virtualAddress() + bufferDesc->offset); HIP_RETURN(hipSuccess); }