From 616ef4c9c77b67e10287c9157aaae9e4dc0b26bc Mon Sep 17 00:00:00 2001 From: Mateusz Jablonski Date: Thu, 9 Nov 2023 13:48:38 +0000 Subject: [PATCH] test: fix ubsan issues in L0 tools tests Signed-off-by: Mateusz Jablonski --- .../sources/sysman/engine/windows/mock_engine.h | 8 ++++---- .../unit_tests/sources/sysman/power/windows/mock_power.h | 4 ++-- .../sources/sysman/windows/mock_kmd_sys_manager.h | 3 +-- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/level_zero/tools/test/unit_tests/sources/sysman/engine/windows/mock_engine.h b/level_zero/tools/test/unit_tests/sources/sysman/engine/windows/mock_engine.h index 56dd6daaf4..d3d6c3cd85 100644 --- a/level_zero/tools/test/unit_tests/sources/sysman/engine/windows/mock_engine.h +++ b/level_zero/tools/test/unit_tests/sources/sysman/engine/windows/mock_engine.h @@ -72,8 +72,8 @@ struct Mock : public EngineKmdSysManager { case KmdSysman::Requests::Activity::CurrentActivityCounter: { uint64_t *pValueCounter = reinterpret_cast(pBuffer); uint64_t *pValueTimeStamp = reinterpret_cast(pBuffer + sizeof(uint64_t)); - *pValueCounter = mockActivityCounters[domain]; - *pValueTimeStamp = mockActivityTimeStamps[domain]; + memcpy_s(pValueCounter, sizeof(uint64_t), &mockActivityCounters[domain], sizeof(uint64_t)); + memcpy_s(pValueTimeStamp, sizeof(uint64_t), &mockActivityTimeStamps[domain], sizeof(uint64_t)); pResponse->outReturnCode = KmdSysman::KmdSysmanSuccess; pResponse->outDataSize = 2 * sizeof(uint64_t); } break; @@ -92,8 +92,8 @@ struct Mock : public EngineKmdSysManager { case KmdSysman::Requests::Activity::CurrentCounterV2: { uint64_t *pValueCounter = reinterpret_cast(pBuffer); uint64_t *pValueTimeStamp = reinterpret_cast(pBuffer + sizeof(uint64_t)); - *pValueCounter = mockActivityCounters[domain]; - *pValueTimeStamp = mockActivityTimeStamps[domain]; + memcpy_s(pValueCounter, sizeof(uint64_t), &mockActivityCounters[domain], sizeof(uint64_t)); + memcpy_s(pValueTimeStamp, sizeof(uint64_t), &mockActivityTimeStamps[domain], sizeof(uint64_t)); pResponse->outReturnCode = KmdSysman::KmdSysmanSuccess; pResponse->outDataSize = 2 * sizeof(uint64_t); } break; diff --git a/level_zero/tools/test/unit_tests/sources/sysman/power/windows/mock_power.h b/level_zero/tools/test/unit_tests/sources/sysman/power/windows/mock_power.h index dfeaac05ae..8c3a63dd7c 100644 --- a/level_zero/tools/test/unit_tests/sources/sysman/power/windows/mock_power.h +++ b/level_zero/tools/test/unit_tests/sources/sysman/power/windows/mock_power.h @@ -148,8 +148,8 @@ struct Mock : public PowerKmdSysManager { case KmdSysman::Requests::Power::CurrentEnergyCounter64Bit: { uint64_t *pValueCounter = reinterpret_cast(pBuffer); uint64_t *pValueTS = reinterpret_cast(pBuffer + sizeof(uint64_t)); - *pValueCounter = mockEnergyCounter64Bit; - *pValueTS = mockTimeStamp; + memcpy_s(pValueCounter, sizeof(uint64_t), &mockEnergyCounter64Bit, sizeof(mockEnergyCounter64Bit)); + memcpy_s(pValueTS, sizeof(uint64_t), &mockTimeStamp, sizeof(mockEnergyCounter64Bit)); pResponse->outReturnCode = KmdSysman::KmdSysmanSuccess; pResponse->outDataSize = sizeof(uint64_t) + sizeof(uint64_t); } break; diff --git a/level_zero/tools/test/unit_tests/sources/sysman/windows/mock_kmd_sys_manager.h b/level_zero/tools/test/unit_tests/sources/sysman/windows/mock_kmd_sys_manager.h index 50b304bfdf..53315568b2 100644 --- a/level_zero/tools/test/unit_tests/sources/sysman/windows/mock_kmd_sys_manager.h +++ b/level_zero/tools/test/unit_tests/sources/sysman/windows/mock_kmd_sys_manager.h @@ -257,8 +257,7 @@ struct Mock : public MockKmdSysManager { for (uint32_t i = 0; i < mockKmdMaxHandlesPerEvent; i++) { if (!handles[pRequest->inRequestId][i].inited) { handles[pRequest->inRequestId][i].inited = true; - unsigned long long eventID = *(unsigned long long *)pBuffer; - handles[pRequest->inRequestId][i].eventHandle = reinterpret_cast(eventID); + memcpy_s(&handles[pRequest->inRequestId][i].eventHandle, sizeof(HANDLE), pBuffer, sizeof(HANDLE)); found = true; break; }