Smbios: improves robostness; adds maiformed SMBIOS data verification and more debug log

This commit is contained in:
Carter Li
2026-03-24 10:52:35 +08:00
committed by 李通洲
parent f32bf9e94f
commit 795bbde459
4 changed files with 118 additions and 84 deletions
+5 -2
View File
@@ -37,9 +37,12 @@ const char* ffDetectCPUCache(FFCPUCacheResult* result)
if (!data)
return "Cache information is not found in SMBIOS data";
for (; data->Header.Type == FF_SMBIOS_TYPE_CACHE_INFO;
data = (const FFSmbiosCacheInfo*) ffSmbiosNextEntry(&data->Header))
const FFSmbiosCacheInfo* endOfTable = (const FFSmbiosCacheInfo*) (*smbiosTable)[FF_SMBIOS_TYPE_END_OF_TABLE];
for (; data != endOfTable; data = (const FFSmbiosCacheInfo*) ffSmbiosNextEntry(&data->Header))
{
if (data->Header.Type != FF_SMBIOS_TYPE_CACHE_INFO)
continue;
bool enabled = !!(data->CacheConfiguration & (1 << 7));
if (!enabled)
continue;
@@ -75,8 +75,8 @@ const char* ffDetectPhysicalMemory(FFlist* result)
if (!data)
return "Memory device is not found in SMBIOS data";
for (; data->Header.Type != FF_SMBIOS_TYPE_END_OF_TABLE; // Ignores custom types (which is larger than 127)
data = (const FFSmbiosMemoryDevice*) ffSmbiosNextEntry(&data->Header))
const FFSmbiosMemoryDevice* endOfTable = (const FFSmbiosMemoryDevice*) (*smbiosTable)[FF_SMBIOS_TYPE_END_OF_TABLE];
for (; data != endOfTable; data = (const FFSmbiosMemoryDevice*) ffSmbiosNextEntry(&data->Header))
{
if (data->Header.Type != FF_SMBIOS_TYPE_MEMORY_DEVICE) continue;