From 92b15507b084de69c9b2e764b0cab6bd8b92ee68 Mon Sep 17 00:00:00 2001 From: Jitendra Sharma Date: Mon, 13 Jul 2020 21:50:32 +0530 Subject: [PATCH] Initialize variables and validate pointers before actually using them Change-Id: Iae6fbeac124e1a02da419f5071e1ebc292b390cf Signed-off-by: Jitendra Sharma --- level_zero/tools/source/sysman/engine/engine.h | 2 +- level_zero/tools/source/sysman/fabric_port/fabric_port.h | 2 +- level_zero/tools/source/sysman/frequency/frequency.h | 2 +- level_zero/tools/source/sysman/memory/memory.h | 2 +- level_zero/tools/source/sysman/pci/pci_imp.h | 2 +- level_zero/tools/source/sysman/power/power.h | 2 +- level_zero/tools/source/sysman/ras/ras.h | 2 +- level_zero/tools/source/sysman/standby/standby.h | 2 +- level_zero/tools/source/sysman/sysman.cpp | 2 +- level_zero/tools/source/sysman/temperature/temperature.h | 2 +- .../tools/test/unit_tests/sources/sysman/test_sysman.cpp | 7 +++++++ 11 files changed, 17 insertions(+), 10 deletions(-) diff --git a/level_zero/tools/source/sysman/engine/engine.h b/level_zero/tools/source/sysman/engine/engine.h index 4f6f5714eb..31db2d52fb 100644 --- a/level_zero/tools/source/sysman/engine/engine.h +++ b/level_zero/tools/source/sysman/engine/engine.h @@ -39,7 +39,7 @@ struct EngineHandleContext { ze_result_t engineGet(uint32_t *pCount, zet_sysman_engine_handle_t *phEngine); OsSysman *pOsSysman = nullptr; - std::vector handleList; + std::vector handleList = {}; }; } // namespace L0 diff --git a/level_zero/tools/source/sysman/fabric_port/fabric_port.h b/level_zero/tools/source/sysman/fabric_port/fabric_port.h index e4a952ecf2..999d27b10f 100644 --- a/level_zero/tools/source/sysman/fabric_port/fabric_port.h +++ b/level_zero/tools/source/sysman/fabric_port/fabric_port.h @@ -41,7 +41,7 @@ struct FabricPortHandleContext { ze_result_t fabricPortGet(uint32_t *pCount, zet_sysman_fabric_port_handle_t *phPort); OsSysman *pOsSysman = nullptr; - std::vector handleList; + std::vector handleList = {}; }; } // namespace L0 diff --git a/level_zero/tools/source/sysman/frequency/frequency.h b/level_zero/tools/source/sysman/frequency/frequency.h index f10653f62b..afa11b398f 100644 --- a/level_zero/tools/source/sysman/frequency/frequency.h +++ b/level_zero/tools/source/sysman/frequency/frequency.h @@ -40,7 +40,7 @@ struct FrequencyHandleContext { ze_result_t frequencyGet(uint32_t *pCount, zet_sysman_freq_handle_t *phFrequency); OsSysman *pOsSysman; - std::vector handle_list; + std::vector handle_list = {}; }; } // namespace L0 diff --git a/level_zero/tools/source/sysman/memory/memory.h b/level_zero/tools/source/sysman/memory/memory.h index a1e1bfba11..ad589dccb6 100644 --- a/level_zero/tools/source/sysman/memory/memory.h +++ b/level_zero/tools/source/sysman/memory/memory.h @@ -40,7 +40,7 @@ struct MemoryHandleContext { OsSysman *pOsSysman = nullptr; bool isLmemSupported = false; - std::vector handleList; + std::vector handleList = {}; ze_device_handle_t hCoreDevice; }; diff --git a/level_zero/tools/source/sysman/pci/pci_imp.h b/level_zero/tools/source/sysman/pci/pci_imp.h index 00d376f109..2f5e5c3d01 100644 --- a/level_zero/tools/source/sysman/pci/pci_imp.h +++ b/level_zero/tools/source/sysman/pci/pci_imp.h @@ -31,7 +31,7 @@ class PciImp : public Pci, NEO::NonCopyableOrMovableClass { private: OsSysman *pOsSysman = nullptr; zet_pci_properties_t pciProperties = {}; - std::vector pciBarProperties; + std::vector pciBarProperties = {}; }; } // namespace L0 diff --git a/level_zero/tools/source/sysman/power/power.h b/level_zero/tools/source/sysman/power/power.h index e3f27277d1..1a05575a07 100644 --- a/level_zero/tools/source/sysman/power/power.h +++ b/level_zero/tools/source/sysman/power/power.h @@ -41,7 +41,7 @@ struct PowerHandleContext { ze_result_t powerGet(uint32_t *pCount, zet_sysman_pwr_handle_t *phPower); OsSysman *pOsSysman = nullptr; - std::vector handleList; + std::vector handleList = {}; }; } // namespace L0 \ No newline at end of file diff --git a/level_zero/tools/source/sysman/ras/ras.h b/level_zero/tools/source/sysman/ras/ras.h index 1fadee8da4..44d1ebf4e3 100644 --- a/level_zero/tools/source/sysman/ras/ras.h +++ b/level_zero/tools/source/sysman/ras/ras.h @@ -42,7 +42,7 @@ struct RasHandleContext { ze_result_t rasGet(uint32_t *pCount, zet_sysman_ras_handle_t *phRas); OsSysman *pOsSysman = nullptr; - std::vector handleList; + std::vector handleList = {}; private: void createHandle(zet_ras_error_type_t type); diff --git a/level_zero/tools/source/sysman/standby/standby.h b/level_zero/tools/source/sysman/standby/standby.h index d02eb0ad66..3737ad535b 100644 --- a/level_zero/tools/source/sysman/standby/standby.h +++ b/level_zero/tools/source/sysman/standby/standby.h @@ -38,7 +38,7 @@ struct StandbyHandleContext { ze_result_t standbyGet(uint32_t *pCount, zet_sysman_standby_handle_t *phStandby); OsSysman *pOsSysman; - std::vector handle_list; + std::vector handle_list = {}; }; } // namespace L0 diff --git a/level_zero/tools/source/sysman/sysman.cpp b/level_zero/tools/source/sysman/sysman.cpp index b9ef2cef54..6f48bb5b1a 100644 --- a/level_zero/tools/source/sysman/sysman.cpp +++ b/level_zero/tools/source/sysman/sysman.cpp @@ -54,7 +54,7 @@ ze_result_t SysmanHandleContext::sysmanGet(zet_device_handle_t hDevice, zet_sysm SysmanDevice *SysmanDeviceHandleContext::init(ze_device_handle_t device) { auto isSysmanEnabled = getenv("ZES_ENABLE_SYSMAN"); - if (isSysmanEnabled == nullptr) { + if ((isSysmanEnabled == nullptr) || (device == nullptr)) { return nullptr; } auto isSysmanEnabledAsInt = atoi(isSysmanEnabled); diff --git a/level_zero/tools/source/sysman/temperature/temperature.h b/level_zero/tools/source/sysman/temperature/temperature.h index 37e7e86219..bc73c25ab6 100644 --- a/level_zero/tools/source/sysman/temperature/temperature.h +++ b/level_zero/tools/source/sysman/temperature/temperature.h @@ -41,7 +41,7 @@ struct TemperatureHandleContext { ze_result_t temperatureGet(uint32_t *pCount, zet_sysman_temp_handle_t *phTemperature); OsSysman *pOsSysman = nullptr; - std::vector handleList; + std::vector handleList = {}; private: void createHandle(zet_temp_sensors_t type); diff --git a/level_zero/tools/test/unit_tests/sources/sysman/test_sysman.cpp b/level_zero/tools/test/unit_tests/sources/sysman/test_sysman.cpp index 53e7d3c8f1..a2e997fc20 100644 --- a/level_zero/tools/test/unit_tests/sources/sysman/test_sysman.cpp +++ b/level_zero/tools/test/unit_tests/sources/sysman/test_sysman.cpp @@ -28,6 +28,13 @@ TEST_F(MockDeviceSysmanGetTest, GivenValidSysmanHandleSetInDeviceStructWhenGetTh EXPECT_EQ(sysman, device->getSysmanHandle()); } +TEST_F(MockDeviceSysmanGetTest, GivenNULLDeviceHandleWhenCreatingSymanHandleThenNullSysmanHandleIsReturned) { + ze_device_handle_t handle = nullptr; + setenv("ZES_ENABLE_SYSMAN", "1", 1); + EXPECT_EQ(nullptr, L0::SysmanDeviceHandleContext::init(handle)); + unsetenv("ZES_ENABLE_SYSMAN"); +} + TEST_F(SysmanDeviceFixture, GivenSysmanEnvironmentSetWhenEnumertatingSysmanHandlesThenValidSysmanHandleReceived) { zes_device_handle_t hSysman = device->toHandle(); auto pSysmanDevice = L0::SysmanDeviceHandleContext::init(hSysman);