- FilterStruct = GetFilterStructByType (((SMBIOS_STRUCTURE *)TableEntry)->Type);\r
- if (FilterStruct != NULL) {\r
- if (FilterStruct->Filter == NULL || FilterStruct->FilterCount == 0) {\r
- // zero all table entries, except header\r
- ZeroMem ((UINT8 *)TableEntry + sizeof(SMBIOS_STRUCTURE), TableEntrySize - sizeof(SMBIOS_STRUCTURE));\r
- } else {\r
- Filter = FilterStruct->Filter;\r
- for (Index = 0; Index < FilterStruct->FilterCount; Index++) {\r
- if ((Filter[Index].Flags & SMBIOS_FILTER_TABLE_FLAG_IS_STRING) != 0) {\r
- CopyMem (&StringId, (UINT8 *)TableEntry + Filter[Index].Offset, sizeof(StringId));\r
- if (StringId != 0) {\r
- // set ' ' for string field\r
- String = GetSmbiosStringById (TableEntry, StringId, &StringLen);\r
- //DEBUG ((EFI_D_INFO,"StrId(0x%x)-%a(%d)\n", StringId, String, StringLen));\r
- SetMem (String, StringLen, ' ');\r
+ //\r
+ // Skip measurement for OEM types.\r
+ //\r
+ if (((SMBIOS_STRUCTURE *)TableEntry)->Type >= SMBIOS_OEM_BEGIN) {\r
+ // zero all table fields, except header\r
+ ZeroMem ((UINT8 *)TableEntry + sizeof(SMBIOS_STRUCTURE), TableEntrySize - sizeof(SMBIOS_STRUCTURE));\r
+ } else {\r
+ FilterStruct = GetFilterStructByType (((SMBIOS_STRUCTURE *)TableEntry)->Type);\r
+ if (FilterStruct != NULL) {\r
+ if (FilterStruct->Filter == NULL || FilterStruct->FilterCount == 0) {\r
+ // zero all table fields, except header\r
+ ZeroMem ((UINT8 *)TableEntry + sizeof(SMBIOS_STRUCTURE), TableEntrySize - sizeof(SMBIOS_STRUCTURE));\r
+ } else {\r
+ Filter = FilterStruct->Filter;\r
+ for (Index = 0; Index < FilterStruct->FilterCount; Index++) {\r
+ if (((SMBIOS_STRUCTURE *) TableEntry)->Length >= (Filter[Index].Offset + Filter[Index].Size)) {\r
+ //\r
+ // The field is present in the SMBIOS entry.\r
+ //\r
+ if ((Filter[Index].Flags & SMBIOS_FILTER_TABLE_FLAG_IS_STRING) != 0) {\r
+ CopyMem (&StringId, (UINT8 *)TableEntry + Filter[Index].Offset, sizeof(StringId));\r
+ if (StringId != 0) {\r
+ // set ' ' for string field\r
+ String = GetSmbiosStringById (TableEntry, StringId, &StringLen);\r
+ ASSERT (String != NULL);\r
+ //DEBUG ((EFI_D_INFO,"StrId(0x%x)-%a(%d)\n", StringId, String, StringLen));\r
+ SetMem (String, StringLen, ' ');\r
+ }\r
+ }\r
+ // zero non-string field\r
+ ZeroMem ((UINT8 *)TableEntry + Filter[Index].Offset, Filter[Index].Size);\r