diff --git a/src/detection/battery/battery_windows.c b/src/detection/battery/battery_windows.c index 72373bceb..5a0a78a3c 100644 --- a/src/detection/battery/battery_windows.c +++ b/src/detection/battery/battery_windows.c @@ -183,7 +183,11 @@ static_assert(offsetof(FFSmbiosPortableBattery, OEMSpecific) == 0x16, const char* detectBySmbios(FFBatteryResult* battery) { - const FFSmbiosPortableBattery* data = (const FFSmbiosPortableBattery*) (*ffGetSmbiosHeaderTable())[FF_SMBIOS_TYPE_PORTABLE_BATTERY]; + const FFSmbiosHeaderTable* smbiosTable = ffGetSmbiosHeaderTable(); + if (!smbiosTable) + return "Failed to get SMBIOS data"; + + const FFSmbiosPortableBattery* data = (const FFSmbiosPortableBattery*) (*smbiosTable)[FF_SMBIOS_TYPE_PORTABLE_BATTERY]; if (!data) return "Portable battery section is not found in SMBIOS data"; diff --git a/src/detection/bios/bios_windows.c b/src/detection/bios/bios_windows.c index 1ea9ee97d..d8a305493 100644 --- a/src/detection/bios/bios_windows.c +++ b/src/detection/bios/bios_windows.c @@ -53,7 +53,11 @@ static_assert(offsetof(FFSmbiosBios, ExtendedBiosRomSize) == 0x18, const char* ffDetectBios(FFBiosResult* bios) { - const FFSmbiosBios* data = (const FFSmbiosBios*) (*ffGetSmbiosHeaderTable())[FF_SMBIOS_TYPE_BIOS]; + const FFSmbiosHeaderTable* smbiosTable = ffGetSmbiosHeaderTable(); + if (!smbiosTable) + return "Failed to get SMBIOS data"; + + const FFSmbiosBios* data = (const FFSmbiosBios*) (*smbiosTable)[FF_SMBIOS_TYPE_BIOS]; if (!data) return "BIOS section is not found in SMBIOS data"; diff --git a/src/detection/board/board_windows.c b/src/detection/board/board_windows.c index 78a8ff7d4..bec6192e7 100644 --- a/src/detection/board/board_windows.c +++ b/src/detection/board/board_windows.c @@ -23,7 +23,11 @@ static_assert(offsetof(FFSmbiosBaseboard, ContainedObjectHandles) == 0x0F, const char* ffDetectBoard(FFBoardResult* board) { - const FFSmbiosBaseboard* data = (const FFSmbiosBaseboard*) (*ffGetSmbiosHeaderTable())[FF_SMBIOS_TYPE_BASEBOARD_INFO]; + const FFSmbiosHeaderTable* smbiosTable = ffGetSmbiosHeaderTable(); + if (!smbiosTable) + return "Failed to get SMBIOS data"; + + const FFSmbiosBaseboard* data = (const FFSmbiosBaseboard*) (*smbiosTable)[FF_SMBIOS_TYPE_BASEBOARD_INFO]; if (!data) return "Baseboard information section is not found in SMBIOS data"; diff --git a/src/detection/chassis/chassis_windows.c b/src/detection/chassis/chassis_windows.c index 2075ef20d..a9f4aeedb 100644 --- a/src/detection/chassis/chassis_windows.c +++ b/src/detection/chassis/chassis_windows.c @@ -32,7 +32,11 @@ static_assert(offsetof(FFSmbiosSystemEnclosure, ContainedElements) == 0x15, const char* ffDetectChassis(FFChassisResult* result) { - const FFSmbiosSystemEnclosure* data = (const FFSmbiosSystemEnclosure*) (*ffGetSmbiosHeaderTable())[FF_SMBIOS_TYPE_SYSTEM_ENCLOSURE]; + const FFSmbiosHeaderTable* smbiosTable = ffGetSmbiosHeaderTable(); + if (!smbiosTable) + return "Failed to get SMBIOS data"; + + const FFSmbiosSystemEnclosure* data = (const FFSmbiosSystemEnclosure*) (*smbiosTable)[FF_SMBIOS_TYPE_SYSTEM_ENCLOSURE]; if (!data) return "System enclosure is not found in SMBIOS data"; diff --git a/src/detection/cpu/cpu_windows.c b/src/detection/cpu/cpu_windows.c index aad79ce1d..0f3bb55d5 100644 --- a/src/detection/cpu/cpu_windows.c +++ b/src/detection/cpu/cpu_windows.c @@ -80,7 +80,11 @@ inline static const char* detectSpeedByCpuid(FF_MAYBE_UNUSED FFCPUResult* cpu) static const char* detectMaxSpeedBySmbios(FFCPUResult* cpu) { - const FFSmbiosProcessorInfo* data = (const FFSmbiosProcessorInfo*) (*ffGetSmbiosHeaderTable())[FF_SMBIOS_TYPE_PROCESSOR_INFO]; + const FFSmbiosHeaderTable* smbiosTable = ffGetSmbiosHeaderTable(); + if (!smbiosTable) + return "Failed to get SMBIOS data"; + + const FFSmbiosProcessorInfo* data = (const FFSmbiosProcessorInfo*) (*smbiosTable)[FF_SMBIOS_TYPE_PROCESSOR_INFO]; if (!data) return "Processor information is not found in SMBIOS data"; diff --git a/src/detection/host/host_windows.c b/src/detection/host/host_windows.c index 0470c1210..c505d9071 100644 --- a/src/detection/host/host_windows.c +++ b/src/detection/host/host_windows.c @@ -31,7 +31,11 @@ static_assert(offsetof(FFSmbiosSystemInfo, Family) == 0x1A, const char* ffDetectHost(FFHostResult* host) { - const FFSmbiosSystemInfo* data = (const FFSmbiosSystemInfo*) (*ffGetSmbiosHeaderTable())[FF_SMBIOS_TYPE_SYSTEM_INFO]; + const FFSmbiosHeaderTable* smbiosTable = ffGetSmbiosHeaderTable(); + if (!smbiosTable) + return "Failed to get SMBIOS data"; + + const FFSmbiosSystemInfo* data = (const FFSmbiosSystemInfo*) (*smbiosTable)[FF_SMBIOS_TYPE_SYSTEM_INFO]; if (!data) return "System information is not found in SMBIOS data";