]> git.proxmox.com Git - mirror_edk2.git/commitdiff
MdeModulePkg SmbiosMeasurementDxe: Use SMBIOS table and GUID correctly
authorStar Zeng <star.zeng@intel.com>
Thu, 29 Oct 2015 01:10:18 +0000 (01:10 +0000)
committerlzeng14 <lzeng14@Edk2>
Thu, 29 Oct 2015 01:10:18 +0000 (01:10 +0000)
1. Smbios3Table used as SmbiosTable wrongly after SmbiosTable got from configuration table.
2. Use correct VendorGuid and VendorTable to measure.

Cc: Jiewen Yao <jiewen.yao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18691 6f19259b-4bc3-4df7-8a09-765794883524

MdeModulePkg/Universal/SmbiosMeasurementDxe/SmbiosMeasurementDxe.c

index 21528276c11b81ff830a75ddf79b850028ee93f8..85963818dcdf1314d3bfff3dc5ae86e0ecf88844 100644 (file)
@@ -478,6 +478,8 @@ MeasureSmbiosTable (
       DEBUG ((EFI_D_INFO, "  TableAddress                - 0x%016lx\n", Smbios3Table->TableAddress));\r
     }\r
   }\r
+\r
+  if (Smbios3Table == NULL) {\r
     Status = EfiGetSystemConfigurationTable (\r
                &gEfiSmbiosTableGuid,\r
                (VOID **) &SmbiosTable\r
@@ -485,10 +487,10 @@ MeasureSmbiosTable (
     if (!EFI_ERROR (Status)) {\r
       DEBUG ((EFI_D_INFO, "SmbiosTable:\n"));\r
       DEBUG ((EFI_D_INFO, "  AnchorString                - '%c%c%c%c'\n",\r
-        Smbios3Table->AnchorString[0],\r
-        Smbios3Table->AnchorString[1],\r
-        Smbios3Table->AnchorString[2],\r
-        Smbios3Table->AnchorString[3]\r
+        SmbiosTable->AnchorString[0],\r
+        SmbiosTable->AnchorString[1],\r
+        SmbiosTable->AnchorString[2],\r
+        SmbiosTable->AnchorString[3]\r
         ));\r
       DEBUG ((EFI_D_INFO, "  EntryPointStructureChecksum - 0x%02x\n", SmbiosTable->EntryPointStructureChecksum));\r
       DEBUG ((EFI_D_INFO, "  EntryPointLength            - 0x%02x\n", SmbiosTable->EntryPointLength));\r
@@ -516,6 +518,7 @@ MeasureSmbiosTable (
       DEBUG ((EFI_D_INFO, "  NumberOfSmbiosStructures    - 0x%04x\n", SmbiosTable->NumberOfSmbiosStructures));\r
       DEBUG ((EFI_D_INFO, "  SmbiosBcdRevision           - 0x%02x\n", SmbiosTable->SmbiosBcdRevision));\r
     }\r
+  }\r
 \r
   if (Smbios3Table != NULL) {\r
     SmbiosTableAddress = (VOID *)(UINTN)Smbios3Table->TableAddress;\r
@@ -542,8 +545,13 @@ MeasureSmbiosTable (
     InternalDumpHex (TableAddress, TableLength);\r
 \r
     HandoffTables.NumberOfTables = 1;\r
-    HandoffTables.TableEntry[0].VendorGuid  = gEfiSmbiosTableGuid;\r
-    HandoffTables.TableEntry[0].VendorTable = SmbiosTable;\r
+    if (Smbios3Table != NULL) {\r
+      CopyGuid (&(HandoffTables.TableEntry[0].VendorGuid), &gEfiSmbios3TableGuid);\r
+      HandoffTables.TableEntry[0].VendorTable = Smbios3Table;\r
+    } else {\r
+      CopyGuid (&(HandoffTables.TableEntry[0].VendorGuid), &gEfiSmbiosTableGuid);\r
+      HandoffTables.TableEntry[0].VendorTable = SmbiosTable;\r
+    }\r
     Status = TpmMeasureAndLogData (\r
                1,                       // PCRIndex\r
                EV_EFI_HANDOFF_TABLES,   // EventType\r