From 07d97279a370e6e66dc1ae9b848fbd5f4eca202e Mon Sep 17 00:00:00 2001 From: lgao4 Date: Tue, 10 Mar 2009 07:54:11 +0000 Subject: Add more checks for Dxe Report status code library to access boot service. Add measure to GPT boot table. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7846 6f19259b-4bc3-4df7-8a09-765794883524 --- .../Library/DxeReportStatusCodeLibFramework/DxeSupport.c | 4 ++-- IntelFrameworkModulePkg/Library/GenericBdsLib/BdsBoot.c | 13 +++++++++++++ .../Library/GenericBdsLib/GenericBdsLib.inf | 1 + .../Library/GenericBdsLib/InternalBdsLib.h | 1 + 4 files changed, 17 insertions(+), 2 deletions(-) (limited to 'IntelFrameworkModulePkg') diff --git a/IntelFrameworkModulePkg/Library/DxeReportStatusCodeLibFramework/DxeSupport.c b/IntelFrameworkModulePkg/Library/DxeReportStatusCodeLibFramework/DxeSupport.c index 42f7699e22..602e42b182 100644 --- a/IntelFrameworkModulePkg/Library/DxeReportStatusCodeLibFramework/DxeSupport.c +++ b/IntelFrameworkModulePkg/Library/DxeReportStatusCodeLibFramework/DxeSupport.c @@ -30,7 +30,7 @@ InternalGetReportStatusCode ( if (gRT->Hdr.Revision < 0x20000) { return ((FRAMEWORK_EFI_RUNTIME_SERVICES*)gRT)->ReportStatusCode; - } else if (gBS != NULL) { + } else if (gBS != NULL && gBS->LocateProtocol != NULL) { Status = gBS->LocateProtocol (&gEfiStatusCodeRuntimeProtocolGuid, NULL, (VOID**)&StatusCodeProtocol); if (!EFI_ERROR (Status) && StatusCodeProtocol != NULL) { return StatusCodeProtocol->ReportStatusCode; @@ -99,7 +99,7 @@ InternalReportStatusCodeEx ( ASSERT (!((ExtendedData == NULL) && (ExtendedDataSize != 0))); ASSERT (!((ExtendedData != NULL) && (ExtendedDataSize == 0))); - if (gBS == NULL) { + if (gBS == NULL || gBS->AllocatePool == NULL || gBS->FreePool == NULL) { return EFI_UNSUPPORTED; } diff --git a/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsBoot.c b/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsBoot.c index df8be070e7..0cb21c1692 100644 --- a/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsBoot.c +++ b/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsBoot.c @@ -146,6 +146,7 @@ BdsLibBootViaBootOption ( EFI_DEVICE_PATH_PROTOCOL *WorkingDevicePath; EFI_ACPI_S3_SAVE_PROTOCOL *AcpiS3Save; LIST_ENTRY TempBootLists; + EFI_SECURITY_ARCH_PROTOCOL *SecurityProtocol; // // Record the performance data for End of BDS @@ -241,6 +242,18 @@ BdsLibBootViaBootOption ( DevicePath = Option->DevicePath; } + // + // Measure GPT Table by SAP protocol. + // + Status = gBS->LocateProtocol ( + &gEfiSecurityArchProtocolGuid, + NULL, + &SecurityProtocol + ); + if (!EFI_ERROR (Status)) { + Status = SecurityProtocol->FileAuthenticationState (SecurityProtocol, 0, DevicePath); + } + DEBUG ((DEBUG_INFO | DEBUG_LOAD, "Booting %S\n", Option->Description)); Status = gBS->LoadImage ( diff --git a/IntelFrameworkModulePkg/Library/GenericBdsLib/GenericBdsLib.inf b/IntelFrameworkModulePkg/Library/GenericBdsLib/GenericBdsLib.inf index e9d4befe3d..983280a666 100644 --- a/IntelFrameworkModulePkg/Library/GenericBdsLib/GenericBdsLib.inf +++ b/IntelFrameworkModulePkg/Library/GenericBdsLib/GenericBdsLib.inf @@ -108,6 +108,7 @@ gEfiConsoleControlProtocolGuid # PROTOCOL CONSUMES gEfiOEMBadgingProtocolGuid # PROTOCOL CONSUMES gEfiHiiFontProtocolGuid # PROTOCOL CONSUMES + gEfiSecurityArchProtocolGuid [FeaturePcd.common] gEfiMdePkgTokenSpaceGuid.PcdUgaConsumeSupport diff --git a/IntelFrameworkModulePkg/Library/GenericBdsLib/InternalBdsLib.h b/IntelFrameworkModulePkg/Library/GenericBdsLib/InternalBdsLib.h index f1a977ae1c..61d5227c09 100644 --- a/IntelFrameworkModulePkg/Library/GenericBdsLib/InternalBdsLib.h +++ b/IntelFrameworkModulePkg/Library/GenericBdsLib/InternalBdsLib.h @@ -39,6 +39,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #include #include #include +#include #include #include -- cgit v1.2.3