From 74bf623ddb8189ec1017f849f0182c4b7671dd90 Mon Sep 17 00:00:00 2001 From: Filip Hazubski Date: Wed, 31 Aug 2022 17:40:48 +0000 Subject: [PATCH] Correct arguments verification of clEnqueueReleaseDX9ObjectsINTEL call When clEnqueueReleaseDX9ObjectsINTEL is called and incorrect memory objects list is passed, ensure that api returns gracefully and proper value is returned. Signed-off-by: Filip Hazubski --- opencl/source/os_interface/windows/api_win.cpp | 5 +++++ opencl/test/unit_test/d3d_sharing/d3d9_tests.cpp | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/opencl/source/os_interface/windows/api_win.cpp b/opencl/source/os_interface/windows/api_win.cpp index b8d65f5632..1c53036c27 100644 --- a/opencl/source/os_interface/windows/api_win.cpp +++ b/opencl/source/os_interface/windows/api_win.cpp @@ -184,6 +184,11 @@ cl_int CL_API_CALL clEnqueueReleaseDX9ObjectsINTEL(cl_command_queue commandQueue return retVal; } + retVal = validateObjects(MemObjList(numObjects, memObjects)); + if (retVal != CL_SUCCESS) { + return retVal; + } + for (unsigned int object = 0; object < numObjects; object++) { auto memObject = castToObject(memObjects[object]); if (!static_cast *>(memObject->peekSharingHandler())->isSharedResource()) { diff --git a/opencl/test/unit_test/d3d_sharing/d3d9_tests.cpp b/opencl/test/unit_test/d3d_sharing/d3d9_tests.cpp index ef7ff09e65..2f2bb292a0 100644 --- a/opencl/test/unit_test/d3d_sharing/d3d9_tests.cpp +++ b/opencl/test/unit_test/d3d_sharing/d3d9_tests.cpp @@ -1007,6 +1007,12 @@ TEST_F(D3D9Tests, givenInvalidClMemObjectPassedOnReleaseListWhenCallIsMadeThenFa EXPECT_EQ(CL_INVALID_MEM_OBJECT, retVal); } +TEST_F(D3D9Tests, givenInvalidClMemObjectPassedOnReleaseDX9ObjectsWhenCallIsMadeThenFailureIsReturned) { + auto fakeObject = reinterpret_cast(cmdQ); + auto retVal = clEnqueueReleaseDX9ObjectsINTEL(cmdQ, 1, &fakeObject, 0, nullptr, nullptr); + EXPECT_EQ(CL_INVALID_MEM_OBJECT, retVal); +} + TEST_F(D3D9Tests, givenResourcesCreatedFromDifferentDevicesWhenAcquireReleaseCalledThenUpdateDevice) { mockSharingFcns->getTexture2dDescSetParams = true; mockSharingFcns->getTexture2dDescParamsSet.textureDesc = mockSharingFcns->mockTexture2dDesc;