From b8922094f6f8b5293f01a09035b74463fff12320 Mon Sep 17 00:00:00 2001 From: Star Zeng Date: Wed, 31 Aug 2016 16:28:49 +0800 Subject: [PATCH] MdeModulePkg SmbiosMeasurementDxe: Add NominalSpeed in Type 27 to black list Cc: Jiewen Yao Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Star Zeng Reviewed-by: Jiewen Yao --- .../SmbiosMeasurementDxe.c | 31 ++++++++++++------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/MdeModulePkg/Universal/SmbiosMeasurementDxe/SmbiosMeasurementDxe.c b/MdeModulePkg/Universal/SmbiosMeasurementDxe/SmbiosMeasurementDxe.c index f9e0196677..bc5e7464e1 100644 --- a/MdeModulePkg/Universal/SmbiosMeasurementDxe/SmbiosMeasurementDxe.c +++ b/MdeModulePkg/Universal/SmbiosMeasurementDxe/SmbiosMeasurementDxe.c @@ -1,7 +1,7 @@ /** @file This driver measures SMBIOS table to TPM. -Copyright (c) 2015, Intel Corporation. All rights reserved.
+Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at @@ -84,6 +84,9 @@ SMBIOS_FILTER_TABLE mSmbiosFilterType22BlackList[] = { SMBIOS_FILTER_TABLE mSmbiosFilterType23BlackList[] = { {0x17, OFFSET_OF(SMBIOS_TABLE_TYPE23, ResetCount), FIELD_SIZE_OF(SMBIOS_TABLE_TYPE23, ResetCount), 0}, }; +SMBIOS_FILTER_TABLE mSmbiosFilterType27BlackList[] = { + {0x1B, OFFSET_OF(SMBIOS_TABLE_TYPE27, NominalSpeed), FIELD_SIZE_OF(SMBIOS_TABLE_TYPE27, NominalSpeed), 0}, +}; SMBIOS_FILTER_TABLE mSmbiosFilterType39BlackList[] = { {0x27, OFFSET_OF(SMBIOS_TABLE_TYPE39, SerialNumber), FIELD_SIZE_OF(SMBIOS_TABLE_TYPE39, SerialNumber), SMBIOS_FILTER_TABLE_FLAG_IS_STRING}, {0x27, OFFSET_OF(SMBIOS_TABLE_TYPE39, AssetTagNumber), FIELD_SIZE_OF(SMBIOS_TABLE_TYPE39, AssetTagNumber), SMBIOS_FILTER_TABLE_FLAG_IS_STRING}, @@ -101,6 +104,7 @@ SMBIOS_FILTER_STRUCT mSmbiosFilterStandardTableBlackList[] = { {0x12, NULL, 0}, {0x16, mSmbiosFilterType22BlackList, sizeof(mSmbiosFilterType22BlackList)/sizeof(mSmbiosFilterType22BlackList[0])}, {0x17, mSmbiosFilterType23BlackList, sizeof(mSmbiosFilterType23BlackList)/sizeof(mSmbiosFilterType23BlackList[0])}, + {0x1B, mSmbiosFilterType27BlackList, sizeof(mSmbiosFilterType27BlackList)/sizeof(mSmbiosFilterType27BlackList[0])}, {0x1F, NULL, 0}, {0x21, NULL, 0}, {0x27, mSmbiosFilterType39BlackList, sizeof(mSmbiosFilterType39BlackList)/sizeof(mSmbiosFilterType39BlackList[0])}, @@ -281,18 +285,23 @@ FilterSmbiosEntry ( } else { Filter = FilterStruct->Filter; for (Index = 0; Index < FilterStruct->FilterCount; Index++) { - if ((Filter[Index].Flags & SMBIOS_FILTER_TABLE_FLAG_IS_STRING) != 0) { - CopyMem (&StringId, (UINT8 *)TableEntry + Filter[Index].Offset, sizeof(StringId)); - if (StringId != 0) { - // set ' ' for string field - String = GetSmbiosStringById (TableEntry, StringId, &StringLen); - ASSERT (String != NULL); - //DEBUG ((EFI_D_INFO,"StrId(0x%x)-%a(%d)\n", StringId, String, StringLen)); - SetMem (String, StringLen, ' '); + if (((SMBIOS_STRUCTURE *) TableEntry)->Length >= (Filter[Index].Offset + Filter[Index].Size)) { + // + // The field is present in the SMBIOS entry. + // + if ((Filter[Index].Flags & SMBIOS_FILTER_TABLE_FLAG_IS_STRING) != 0) { + CopyMem (&StringId, (UINT8 *)TableEntry + Filter[Index].Offset, sizeof(StringId)); + if (StringId != 0) { + // set ' ' for string field + String = GetSmbiosStringById (TableEntry, StringId, &StringLen); + ASSERT (String != NULL); + //DEBUG ((EFI_D_INFO,"StrId(0x%x)-%a(%d)\n", StringId, String, StringLen)); + SetMem (String, StringLen, ' '); + } } + // zero non-string field + ZeroMem ((UINT8 *)TableEntry + Filter[Index].Offset, Filter[Index].Size); } - // zero non-string field - ZeroMem ((UINT8 *)TableEntry + Filter[Index].Offset, Filter[Index].Size); } } }