summaryrefslogtreecommitdiffstats
path: root/MdePkg
diff options
context:
space:
mode:
authorlgao4 <lgao4@6f19259b-4bc3-4df7-8a09-765794883524>2008-08-18 12:11:37 +0000
committerlgao4 <lgao4@6f19259b-4bc3-4df7-8a09-765794883524>2008-08-18 12:11:37 +0000
commitb911d09f5525e5bb27d5c9dffcfd6120e095ac84 (patch)
tree657ff1575c56b81d968d90f29238313fae127816 /MdePkg
parentd1a44d08c1b221669e88f27801b3e4ae26d7fd96 (diff)
downloadedk2-b911d09f5525e5bb27d5c9dffcfd6120e095ac84.tar.gz
edk2-b911d09f5525e5bb27d5c9dffcfd6120e095ac84.tar.bz2
edk2-b911d09f5525e5bb27d5c9dffcfd6120e095ac84.zip
Code Clean up for IfrSupportLib, HiiLib, PeiExtractGuidedSectionLib and DxeExtractGuidedSectionLib,
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5687 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'MdePkg')
-rw-r--r--MdePkg/Library/DxeExtractGuidedSectionLib/DxeExtractGuidedSectionLib.c74
-rw-r--r--MdePkg/Library/DxeExtractGuidedSectionLib/DxeExtractGuidedSectionLib.inf2
-rw-r--r--MdePkg/Library/HiiLib/HiiLanguage.c4
-rw-r--r--MdePkg/Library/HiiLib/HiiLib.c18
-rw-r--r--MdePkg/Library/HiiLib/HiiLib.inf9
-rw-r--r--MdePkg/Library/HiiLib/InternalHiiLib.h2
-rw-r--r--MdePkg/Library/IfrSupportLib/IfrSupportLib.inf14
-rw-r--r--MdePkg/Library/IfrSupportLib/UefiIfrCommon.c51
-rw-r--r--MdePkg/Library/IfrSupportLib/UefiIfrForm.c118
-rw-r--r--MdePkg/Library/IfrSupportLib/UefiIfrLibraryInternal.h7
-rw-r--r--MdePkg/Library/PeiExtractGuidedSectionLib/PeiExtractGuidedSectionLib.c64
-rw-r--r--MdePkg/Library/PeiExtractGuidedSectionLib/PeiExtractGuidedSectionLib.inf2
12 files changed, 165 insertions, 200 deletions
diff --git a/MdePkg/Library/DxeExtractGuidedSectionLib/DxeExtractGuidedSectionLib.c b/MdePkg/Library/DxeExtractGuidedSectionLib/DxeExtractGuidedSectionLib.c
index b98e8f3ae9..7250828744 100644
--- a/MdePkg/Library/DxeExtractGuidedSectionLib/DxeExtractGuidedSectionLib.c
+++ b/MdePkg/Library/DxeExtractGuidedSectionLib/DxeExtractGuidedSectionLib.c
@@ -21,7 +21,7 @@
#include <Library/ExtractGuidedSectionLib.h>
STATIC GUID *mExtractHandlerGuidTable;
-STATIC UINT32 mNumberOfExtractHandler;
+STATIC UINT32 mNumberOfExtractHandler = 0;
STATIC EXTRACT_GUIDED_SECTION_DECODE_HANDLER *mExtractDecodeHandlerTable;
STATIC EXTRACT_GUIDED_SECTION_GET_INFO_HANDLER *mExtractGetInfoHandlerTable;
@@ -52,19 +52,17 @@ DxeExtractGuidedSectionLibConstructor (
mExtractDecodeHandlerTable = (EXTRACT_GUIDED_SECTION_DECODE_HANDLER *) AllocatePool (PcdGet32 (PcdMaximumGuidedExtractHandler) * sizeof (EXTRACT_GUIDED_SECTION_DECODE_HANDLER));
if (mExtractDecodeHandlerTable == NULL) {
+ FreePool (mExtractHandlerGuidTable);
return RETURN_OUT_OF_RESOURCES;
}
mExtractGetInfoHandlerTable = (EXTRACT_GUIDED_SECTION_GET_INFO_HANDLER *) AllocatePool (PcdGet32 (PcdMaximumGuidedExtractHandler) * sizeof (EXTRACT_GUIDED_SECTION_GET_INFO_HANDLER));
if (mExtractGetInfoHandlerTable == NULL) {
+ FreePool (mExtractHandlerGuidTable);
+ FreePool (mExtractDecodeHandlerTable);
return RETURN_OUT_OF_RESOURCES;
}
- //
- // the initialized number is Zero.
- //
- mNumberOfExtractHandler = 0;
-
return RETURN_SUCCESS;
}
@@ -122,18 +120,14 @@ ExtractGuidedSectionRegisterHandlers (
//
for (Index = 0; Index < mNumberOfExtractHandler; Index ++) {
if (CompareGuid (&mExtractHandlerGuidTable[Index], SectionGuid)) {
- break;
+ //
+ // If the guided handler has been registered before, only update its handler.
+ //
+ mExtractDecodeHandlerTable [Index] = DecodeHandler;
+ mExtractGetInfoHandlerTable [Index] = GetInfoHandler;
+ return RETURN_SUCCESS;
}
}
-
- //
- // If the guided handler has been registered before, only update its handler.
- //
- if (Index < mNumberOfExtractHandler) {
- mExtractDecodeHandlerTable [Index] = DecodeHandler;
- mExtractGetInfoHandlerTable [Index] = GetInfoHandler;
- return RETURN_SUCCESS;
- }
//
// Check the global table is enough to contain new Handler.
@@ -197,26 +191,22 @@ ExtractGuidedSectionGetInfo (
//
for (Index = 0; Index < mNumberOfExtractHandler; Index ++) {
if (CompareGuid (&mExtractHandlerGuidTable[Index], &(((EFI_GUID_DEFINED_SECTION *) InputSection)->SectionDefinitionGuid))) {
- break;
+ //
+ // Call the match handler to getinfo for the input section data.
+ //
+ return mExtractGetInfoHandlerTable [Index] (
+ InputSection,
+ OutputBufferSize,
+ ScratchBufferSize,
+ SectionAttribute
+ );
}
}
//
// Not found, the input guided section is not supported.
//
- if (Index == mNumberOfExtractHandler) {
- return RETURN_UNSUPPORTED;
- }
-
- //
- // Call the match handler to getinfo for the input section data.
- //
- return mExtractGetInfoHandlerTable [Index] (
- InputSection,
- OutputBufferSize,
- ScratchBufferSize,
- SectionAttribute
- );
+ return RETURN_UNSUPPORTED;
}
/**
@@ -270,24 +260,20 @@ ExtractGuidedSectionDecode (
//
for (Index = 0; Index < mNumberOfExtractHandler; Index ++) {
if (CompareGuid (&mExtractHandlerGuidTable[Index], &(((EFI_GUID_DEFINED_SECTION *) InputSection)->SectionDefinitionGuid))) {
- break;
+ //
+ // Call the match handler to extract raw data for the input section data.
+ //
+ return mExtractDecodeHandlerTable [Index] (
+ InputSection,
+ OutputBuffer,
+ ScratchBuffer,
+ AuthenticationStatus
+ );
}
}
//
// Not found, the input guided section is not supported.
//
- if (Index == mNumberOfExtractHandler) {
- return RETURN_UNSUPPORTED;
- }
-
- //
- // Call the match handler to extract raw data for the input section data.
- //
- return mExtractDecodeHandlerTable [Index] (
- InputSection,
- OutputBuffer,
- ScratchBuffer,
- AuthenticationStatus
- );
+ return RETURN_UNSUPPORTED;
}
diff --git a/MdePkg/Library/DxeExtractGuidedSectionLib/DxeExtractGuidedSectionLib.inf b/MdePkg/Library/DxeExtractGuidedSectionLib/DxeExtractGuidedSectionLib.inf
index 7bed5477e0..5e288dde8a 100644
--- a/MdePkg/Library/DxeExtractGuidedSectionLib/DxeExtractGuidedSectionLib.inf
+++ b/MdePkg/Library/DxeExtractGuidedSectionLib/DxeExtractGuidedSectionLib.inf
@@ -44,7 +44,7 @@
BaseMemoryLib
DebugLib
-[FixedPcd.common]
+[Pcd.common]
gEfiMdePkgTokenSpaceGuid.PcdMaximumGuidedExtractHandler
diff --git a/MdePkg/Library/HiiLib/HiiLanguage.c b/MdePkg/Library/HiiLib/HiiLanguage.c
index 6948b2c331..8c03bb993a 100644
--- a/MdePkg/Library/HiiLib/HiiLanguage.c
+++ b/MdePkg/Library/HiiLib/HiiLanguage.c
@@ -1,7 +1,7 @@
/** @file
Language related HII Library implementation.
- Copyright (c) 2006, Intel Corporation<BR>
+ Copyright (c) 2006 - 2008, Intel Corporation<BR>
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
@@ -128,6 +128,7 @@ HiiLibGetSupportedLanguages (
ASSERT (IsHiiHandleRegistered (HiiHandle));
//
// Collect current supported Languages for given HII handle
+ // First try allocate 4K buffer to store the current supported languages.
//
BufferSize = 0x1000;
LanguageString = AllocateZeroPool (BufferSize);
@@ -223,6 +224,7 @@ HiiLibGetSupportedSecondaryLanguages (
ASSERT (IsHiiHandleRegistered (HiiHandle));
//
// Collect current supported 2nd Languages for given HII handle
+ // First try allocate 4K buffer to store the current supported 2nd languages.
//
BufferSize = 0x1000;
LanguageString = AllocateZeroPool (BufferSize);
diff --git a/MdePkg/Library/HiiLib/HiiLib.c b/MdePkg/Library/HiiLib/HiiLib.c
index efae6780bc..81a7241cc9 100644
--- a/MdePkg/Library/HiiLib/HiiLib.c
+++ b/MdePkg/Library/HiiLib/HiiLib.c
@@ -1,7 +1,7 @@
/** @file
HII Library implementation that uses DXE protocols and services.
- Copyright (c) 2006, Intel Corporation<BR>
+ Copyright (c) 2006 - 2008, Intel Corporation<BR>
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
@@ -14,10 +14,8 @@
#include "InternalHiiLib.h"
-CONST EFI_HII_DATABASE_PROTOCOL *mHiiDatabaseProt;
-CONST EFI_HII_STRING_PROTOCOL *mHiiStringProt;
-BOOLEAN mHiiProtocolsInitialized = FALSE;
-
+CONST EFI_HII_DATABASE_PROTOCOL *mHiiDatabaseProt = NULL;
+CONST EFI_HII_STRING_PROTOCOL *mHiiStringProt = NULL;
/**
@@ -31,7 +29,7 @@ LocateHiiProtocols (
{
EFI_STATUS Status;
- if (mHiiProtocolsInitialized) {
+ if (mHiiStringProt != NULL && mHiiDatabaseProt != NULL) {
//
// Only need to initialize the protocol instance once.
//
@@ -43,8 +41,6 @@ LocateHiiProtocols (
Status = gBS->LocateProtocol (&gEfiHiiStringProtocolGuid, NULL, (VOID **) &mHiiStringProt);
ASSERT_EFI_ERROR (Status);
-
- mHiiProtocolsInitialized = TRUE;
}
@@ -112,7 +108,7 @@ InternalHiiLibPreparePackages (
PackageListHeader = AllocateZeroPool (PackageListLength);
ASSERT (PackageListHeader != NULL);
- CopyMem (&PackageListHeader->PackageListGuid, GuidId, sizeof (EFI_GUID));
+ CopyGuid (&PackageListHeader->PackageListGuid, GuidId);
PackageListHeader->PackageLength = PackageListLength;
PackageListData = ((UINT8 *) PackageListHeader) + sizeof (EFI_HII_PACKAGE_LIST_HEADER);
@@ -304,6 +300,7 @@ HiiLibGetHiiHandles (
if (Status == EFI_BUFFER_TOO_SMALL) {
*HiiHandleBuffer = AllocateZeroPool (BufferLength);
+ ASSERT (*HiiHandleBuffer != NULL);
Status = mHiiDatabaseProt->ListPackageLists (
mHiiDatabaseProt,
EFI_HII_PACKAGE_TYPE_ALL,
@@ -366,13 +363,14 @@ HiiLibExtractGuidFromHiiHandle (
Status = mHiiDatabaseProt->ExportPackageLists (mHiiDatabaseProt, Handle, &BufferSize, HiiPackageList);
}
if (EFI_ERROR (Status)) {
+ FreePool (HiiPackageList);
return Status;
}
//
// Extract GUID
//
- CopyMem (Guid, &HiiPackageList->PackageListGuid, sizeof (EFI_GUID));
+ CopyGuid (Guid, &HiiPackageList->PackageListGuid);
FreePool (HiiPackageList);
diff --git a/MdePkg/Library/HiiLib/HiiLib.inf b/MdePkg/Library/HiiLib/HiiLib.inf
index f9ff028942..f9f62645a5 100644
--- a/MdePkg/Library/HiiLib/HiiLib.inf
+++ b/MdePkg/Library/HiiLib/HiiLib.inf
@@ -22,7 +22,7 @@
VERSION_STRING = 1.0
LIBRARY_CLASS = HiiLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
EDK_RELEASE_VERSION = 0x00020000
- EFI_SPECIFICATION_VERSION = 0x0002000A
+ EFI_SPECIFICATION_VERSION = 0x00020000
#
# VALID_ARCHITECTURES = IA32 X64 IPF EBC
@@ -32,16 +32,19 @@
HiiLib.c
HiiString.c
HiiLanguage.c
-
+ InternalHiiLib.h
[Packages]
MdePkg/MdePkg.dec
[LibraryClasses]
MemoryAllocationLib
+ BaseMemoryLib
+ BaseLib
DebugLib
PcdLib
UefiRuntimeServicesTableLib
+ UefiBootServicesTableLib
DevicePathLib
[Protocols]
@@ -53,4 +56,4 @@
gEfiGlobalVariableGuid
[Pcd]
- gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultPlatformLang \ No newline at end of file
+ gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultPlatformLang
diff --git a/MdePkg/Library/HiiLib/InternalHiiLib.h b/MdePkg/Library/HiiLib/InternalHiiLib.h
index c01e5b020a..d80db675a2 100644
--- a/MdePkg/Library/HiiLib/InternalHiiLib.h
+++ b/MdePkg/Library/HiiLib/InternalHiiLib.h
@@ -38,8 +38,6 @@
extern CONST EFI_HII_DATABASE_PROTOCOL *mHiiDatabaseProt;
extern CONST EFI_HII_STRING_PROTOCOL *mHiiStringProt;
-extern BOOLEAN mHiiProtocolsInitialized;
-
/**
This function check if the Hii Handle is a valid handle registered
diff --git a/MdePkg/Library/IfrSupportLib/IfrSupportLib.inf b/MdePkg/Library/IfrSupportLib/IfrSupportLib.inf
index 32e1027ae3..6c1b86f12b 100644
--- a/MdePkg/Library/IfrSupportLib/IfrSupportLib.inf
+++ b/MdePkg/Library/IfrSupportLib/IfrSupportLib.inf
@@ -2,7 +2,7 @@
#Utility functions which helps in opcode creation, HII configuration string manipulations,
#pop up window creations, setup browser persistence data set and get.
#
-# Copyright (c) 2007, Intel Corporation. All rights reserved.
+# Copyright (c) 2007 - 2008, Intel Corporation. All rights reserved.
#
# All rights reserved. This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License
@@ -21,7 +21,7 @@
FILE_GUID = bf38668e-e231-4baa-99e4-8c0e4c35dca6
MODULE_TYPE = DXE_DRIVER
VERSION_STRING = 1.0
- LIBRARY_CLASS = IfrSupportLib
+ LIBRARY_CLASS = IfrSupportLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
EDK_RELEASE_VERSION = 0x00020000
EFI_SPECIFICATION_VERSION = 0x00020000
@@ -46,20 +46,10 @@
DevicePathLib
BaseLib
UefiBootServicesTableLib
- UefiRuntimeServicesTableLib
BaseMemoryLib
DebugLib
- PcdLib
-
-[Guids]
- gEfiGlobalVariableGuid # ALWAYS_CONSUMED
[Protocols]
gEfiDevicePathProtocolGuid # PROTOCOL ALWAYS_CONSUMED
- gEfiHiiDatabaseProtocolGuid
- gEfiHiiStringProtocolGuid
gEfiHiiConfigRoutingProtocolGuid
gEfiFormBrowser2ProtocolGuid
-
-[Pcd]
- gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultPlatformLang
diff --git a/MdePkg/Library/IfrSupportLib/UefiIfrCommon.c b/MdePkg/Library/IfrSupportLib/UefiIfrCommon.c
deleted file mode 100644
index 18c594f45d..0000000000
--- a/MdePkg/Library/IfrSupportLib/UefiIfrCommon.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/** @file
-Utility functions which helps in opcode creation, HII configuration string manipulations,
-pop up window creations, setup browser persistence data set and get.
-
-Copyright (c) 2007 - 2008, 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
-http://opensource.org/licenses/bsd-license.php
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-#include "UefiIfrLibraryInternal.h"
-
-EFI_HII_DATABASE_PROTOCOL *gIfrLibHiiDatabase;
-EFI_HII_STRING_PROTOCOL *gIfrLibHiiString;
-
-
-/**
- IfrSupportLib's constructor. It locates the required protocol:
- gEfiHiiDatabaseProtocolGuid and gEfiHiiStringProtocolGuid.
-
- @param ImageHandle The firmware allocated handle for the EFI image.
-
- @param SystemTable A pointer to the EFI System Table.
-
- @retval EFI_SUCCESS This function always completes successfully.
-
-**/
-EFI_STATUS
-EFIAPI
-IfrSupportLibConstructor (
- IN EFI_HANDLE ImageHandle,
- IN EFI_SYSTEM_TABLE *SystemTable
- )
-{
- EFI_STATUS Status;
-
- Status = gBS->LocateProtocol (&gEfiHiiDatabaseProtocolGuid, NULL, (VOID **) &gIfrLibHiiDatabase);
- ASSERT_EFI_ERROR (Status);
-
- Status = gBS->LocateProtocol (&gEfiHiiStringProtocolGuid, NULL, (VOID **) &gIfrLibHiiString);
- ASSERT_EFI_ERROR (Status);
-
- return EFI_SUCCESS;
-}
-
-
diff --git a/MdePkg/Library/IfrSupportLib/UefiIfrForm.c b/MdePkg/Library/IfrSupportLib/UefiIfrForm.c
index 504b88d468..3ae15f4161 100644
--- a/MdePkg/Library/IfrSupportLib/UefiIfrForm.c
+++ b/MdePkg/Library/IfrSupportLib/UefiIfrForm.c
@@ -15,6 +15,40 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#include "UefiIfrLibraryInternal.h"
+STATIC CONST EFI_FORM_BROWSER2_PROTOCOL *mFormBrowser2 = NULL;
+STATIC CONST EFI_HII_CONFIG_ROUTING_PROTOCOL *mHiiConfigRouting = NULL;
+
+/**
+ This function locate FormBrowser2 protocols for later usage.
+
+ @return Status the status to locate protocol.
+**/
+EFI_STATUS
+LocateFormBrowser2Protocols (
+ VOID
+ )
+{
+ EFI_STATUS Status;
+ //
+ // Locate protocols for later usage
+ //
+ if (mFormBrowser2 == NULL) {
+ Status = gBS->LocateProtocol (&gEfiFormBrowser2ProtocolGuid, NULL, (VOID **) &mFormBrowser2);
+ if (EFI_ERROR (Status)) {
+ return Status;
+ }
+ }
+
+ if (mHiiConfigRouting == NULL) {
+ Status = gBS->LocateProtocol (&gEfiHiiConfigRoutingProtocolGuid, NULL, (VOID **) &mHiiConfigRouting);
+ if (EFI_ERROR (Status)) {
+ return Status;
+ }
+ }
+
+ return EFI_SUCCESS;
+}
+
//
// Fake <ConfigHdr>
//
@@ -32,6 +66,7 @@ GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT16 mFakeConfigHdr[] = L"GUID=00000000000
@retval EFI_SUCCESS Displayed dialog and received user interaction
@retval EFI_INVALID_PARAMETER One of the parameters was invalid.
+ @retval EFI_OUT_OF_RESOURCES There is no enough available memory space.
**/
EFI_STATUS
@@ -86,13 +121,19 @@ IfrLibCreatePopUp2 (
CurrentAttribute = ConOut->Mode->Attribute;
LineBuffer = AllocateZeroPool (DimensionsWidth * sizeof (CHAR16));
- ASSERT (LineBuffer != NULL);
+ if (LineBuffer == NULL) {
+ return EFI_OUT_OF_RESOURCES;
+ }
//
// Determine the largest string in the dialog box
// Notice we are starting with 1 since String is the first string
//
StringArray = AllocateZeroPool (NumberOfLines * sizeof (CHAR16 *));
+ if (StringArray == NULL) {
+ FreePool (LineBuffer);
+ return EFI_OUT_OF_RESOURCES;
+ }
LargestString = StrLen (String);
StringArray[0] = String;
@@ -100,6 +141,8 @@ IfrLibCreatePopUp2 (
StackString = VA_ARG (Marker, CHAR16 *);
if (StackString == NULL) {
+ FreePool (LineBuffer);
+ FreePool (StringArray);
return EFI_INVALID_PARAMETER;
}
@@ -211,7 +254,11 @@ IfrLibCreatePopUp2 (
ConOut->SetAttribute (ConOut, CurrentAttribute);
ConOut->EnableCursor (ConOut, TRUE);
- return Status;}
+ FreePool (LineBuffer);
+ FreePool (StringArray);
+
+ return Status;
+}
/**
@@ -307,6 +354,7 @@ ToLower (
@param BufferSize Size of the buffer in bytes.
@retval EFI_SUCCESS The function completed successfully.
+ @retval EFI_OUT_OF_RESOURCES There is no enough available memory space.
**/
EFI_STATUS
@@ -322,6 +370,9 @@ BufferToHexString (
UINTN StrBufferLen;
NewBuffer = AllocateCopyPool (BufferSize, Buffer);
+ if (NewBuffer == NULL) {
+ return EFI_OUT_OF_RESOURCES;
+ }
SwapBuffer (NewBuffer, BufferSize);
StrBufferLen = BufferSize * sizeof (CHAR16) + 1;
@@ -670,6 +721,7 @@ FindBlockName (
@retval EFI_SUCCESS Routine success.
@retval EFI_BUFFER_TOO_SMALL The intput buffer is too small.
+ @retval EFI_OUT_OF_RESOURCES There is no enough available memory space.
**/
EFI_STATUS
@@ -688,18 +740,11 @@ GetBrowserData (
UINTN HeaderLen;
UINTN BufferLen;
CHAR16 *Progress;
- EFI_FORM_BROWSER2_PROTOCOL *FormBrowser2;
- EFI_HII_CONFIG_ROUTING_PROTOCOL *HiiConfigRouting;
//
// Locate protocols for use
//
- Status = gBS->LocateProtocol (&gEfiFormBrowser2ProtocolGuid, NULL, (VOID **) &FormBrowser2);
- if (EFI_ERROR (Status)) {
- return Status;
- }
-
- Status = gBS->LocateProtocol (&gEfiHiiConfigRoutingProtocolGuid, NULL, (VOID **) &HiiConfigRouting);
+ Status = LocateFormBrowser2Protocols ();
if (EFI_ERROR (Status)) {
return Status;
}
@@ -709,16 +754,22 @@ GetBrowserData (
//
ConfigHdr = mFakeConfigHdr;
HeaderLen = StrLen (ConfigHdr);
-
+
+ //
+ // First try allocate 0x4000 buffer for the formet storage data.
+ //
BufferLen = 0x4000;
ConfigResp = AllocateZeroPool (BufferLen + HeaderLen);
+ if (ConfigResp == NULL) {
+ BufferLen = 0;
+ }
StringPtr = ConfigResp + HeaderLen;
*StringPtr = L'&';
StringPtr++;
- Status = FormBrowser2->BrowserCallback (
- FormBrowser2,
+ Status = mFormBrowser2->BrowserCallback (
+ mFormBrowser2,
&BufferLen,
StringPtr,
TRUE,
@@ -726,15 +777,21 @@ GetBrowserData (
VariableName
);
if (Status == EFI_BUFFER_TOO_SMALL) {
- FreePool (ConfigResp);
+ if (ConfigResp != NULL) {
+ FreePool (ConfigResp);
+ }
+
ConfigResp = AllocateZeroPool (BufferLen + HeaderLen);
+ if (ConfigResp == NULL) {
+ return EFI_OUT_OF_RESOURCES;
+ }
StringPtr = ConfigResp + HeaderLen;
*StringPtr = L'&';
StringPtr++;
- Status = FormBrowser2->BrowserCallback (
- FormBrowser2,
+ Status = mFormBrowser2->BrowserCallback (
+ mFormBrowser2,
&BufferLen,
StringPtr,
TRUE,
@@ -751,8 +808,8 @@ GetBrowserData (
//
// Convert <ConfigResp> to buffer data
//
- Status = HiiConfigRouting->ConfigToBlock (
- HiiConfigRouting,
+ Status = mHiiConfigRouting->ConfigToBlock (
+ mHiiConfigRouting,
ConfigResp,
Buffer,
BufferSize,
@@ -780,6 +837,7 @@ GetBrowserData (
&OFFSET=<Number>&WIDTH=<Number>*
@retval EFI_SUCCESS Routine success.
+ @retval EFI_OUT_OF_RESOURCES There is no enough available memory space.
@retval Other Updating Browser uncommitted data failed.
**/
@@ -800,8 +858,6 @@ SetBrowserData (
UINTN HeaderLen;
UINTN BufferLen;
CHAR16 *Progress;
- EFI_FORM_BROWSER2_PROTOCOL *FormBrowser2;
- EFI_HII_CONFIG_ROUTING_PROTOCOL *HiiConfigRouting;
CHAR16 BlockName[33];
CHAR16 *ConfigRequest;
CHAR16 *Request;
@@ -809,12 +865,7 @@ SetBrowserData (
//
// Locate protocols for use
//
- Status = gBS->LocateProtocol (&gEfiFormBrowser2ProtocolGuid, NULL, (VOID **) &FormBrowser2);
- if (EFI_ERROR (Status)) {
- return Status;
- }
-
- Status = gBS->LocateProtocol (&gEfiHiiConfigRoutingProtocolGuid, NULL, (VOID **) &HiiConfigRouting);
+ Status = LocateFormBrowser2Protocols ();
if (EFI_ERROR (Status)) {
return Status;
}
@@ -846,6 +897,9 @@ SetBrowserData (
BufferLen = HeaderLen * sizeof (CHAR16) + StrSize (Request);
ConfigRequest = AllocateZeroPool (BufferLen);
+ if (ConfigRequest == NULL) {
+ return EFI_OUT_OF_RESOURCES;
+ }
CopyMem (ConfigRequest, ConfigHdr, HeaderLen * sizeof (CHAR16));
StringPtr = ConfigRequest + HeaderLen;
@@ -854,8 +908,8 @@ SetBrowserData (
//
// Convert buffer to <ConfigResp>
//
- Status = HiiConfigRouting->BlockToConfig (
- HiiConfigRouting,
+ Status = mHiiConfigRouting->BlockToConfig (
+ mHiiConfigRouting,
ConfigRequest,
Buffer,
BufferSize,
@@ -863,7 +917,7 @@ SetBrowserData (
&Progress
);
if (EFI_ERROR (Status)) {
- FreePool (ConfigResp);
+ FreePool (ConfigRequest);
return Status;
}
@@ -875,14 +929,14 @@ SetBrowserData (
//
// Change uncommitted data in Browser
//
- Status = FormBrowser2->BrowserCallback (
- FormBrowser2,
+ Status = mFormBrowser2->BrowserCallback (
+ mFormBrowser2,
&BufferSize,
StringPtr,
FALSE,
NULL,
NULL
);
- FreePool (ConfigResp);
+ FreePool (ConfigRequest);
return Status;
}
diff --git a/MdePkg/Library/IfrSupportLib/UefiIfrLibraryInternal.h b/MdePkg/Library/IfrSupportLib/UefiIfrLibraryInternal.h
index 34a0cf1260..1cdb36c78d 100644
--- a/MdePkg/Library/IfrSupportLib/UefiIfrLibraryInternal.h
+++ b/MdePkg/Library/IfrSupportLib/UefiIfrLibraryInternal.h
@@ -2,7 +2,7 @@
Utility functions which helps in opcode creation, HII configuration string manipulations,
pop up window creations, setup browser persistence data set and get.
-Copyright (c) 2007, Intel Corporation
+Copyright (c) 2007 - 2008, 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
@@ -20,19 +20,16 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#include <PiDxe.h>
-#include <Guid/GlobalVariable.h>
#include <Protocol/DevicePath.h>
#include <Library/DebugLib.h>
#include <Library/BaseMemoryLib.h>
-#include <Library/UefiRuntimeServicesTableLib.h>
#include <Library/UefiBootServicesTableLib.h>
#include <Library/BaseLib.h>
#include <Library/DevicePathLib.h>
#include <Library/MemoryAllocationLib.h>
#include <Library/IfrSupportLib.h>
-#include <Library/HiiLib.h>
-#include <Library/PcdLib.h>
+
#endif
diff --git a/MdePkg/Library/PeiExtractGuidedSectionLib/PeiExtractGuidedSectionLib.c b/MdePkg/Library/PeiExtractGuidedSectionLib/PeiExtractGuidedSectionLib.c
index 2b09c46cc9..72add417b6 100644
--- a/MdePkg/Library/PeiExtractGuidedSectionLib/PeiExtractGuidedSectionLib.c
+++ b/MdePkg/Library/PeiExtractGuidedSectionLib/PeiExtractGuidedSectionLib.c
@@ -196,20 +196,16 @@ ExtractGuidedSectionRegisterHandlers (
//
for (Index = 0; Index < HandlerInfo->NumberOfExtractHandler; Index ++) {
if (CompareGuid (HandlerInfo->ExtractHandlerGuidTable + Index, SectionGuid)) {
- break;
+ //
+ // If the guided handler has been registered before, only update its handler.
+ //
+ HandlerInfo->ExtractDecodeHandlerTable [Index] = DecodeHandler;
+ HandlerInfo->ExtractGetInfoHandlerTable [Index] = GetInfoHandler;
+ return RETURN_SUCCESS;
}
}
//
- // If the guided handler has been registered before, only update its handler.
- //
- if (Index < HandlerInfo->NumberOfExtractHandler) {
- HandlerInfo->ExtractDecodeHandlerTable [Index] = DecodeHandler;
- HandlerInfo->ExtractGetInfoHandlerTable [Index] = GetInfoHandler;
- return RETURN_SUCCESS;
- }
-
- //
// Check the global table is enough to contain new Handler.
//
if (HandlerInfo->NumberOfExtractHandler >= PcdGet32 (PcdMaximumGuidedExtractHandler)) {
@@ -284,26 +280,22 @@ ExtractGuidedSectionGetInfo (
//
for (Index = 0; Index < HandlerInfo->NumberOfExtractHandler; Index ++) {
if (CompareGuid (HandlerInfo->ExtractHandlerGuidTable + Index, &(((EFI_GUID_DEFINED_SECTION *) InputSection)->SectionDefinitionGuid))) {
- break;
+ //
+ // Call the match handler to getinfo for the input section data.
+ //
+ return HandlerInfo->ExtractGetInfoHandlerTable [Index] (
+ InputSection,
+ OutputBufferSize,
+ ScratchBufferSize,
+ SectionAttribute
+ );
}
}
//
// Not found, the input guided section is not supported.
//
- if (Index == HandlerInfo->NumberOfExtractHandler) {
- return RETURN_UNSUPPORTED;
- }
-
- //
- // Call the match handler to getinfo for the input section data.
- //
- return HandlerInfo->ExtractGetInfoHandlerTable [Index] (
- InputSection,
- OutputBufferSize,
- ScratchBufferSize,
- SectionAttribute
- );
+ return RETURN_UNSUPPORTED;
}
/**
@@ -366,24 +358,20 @@ ExtractGuidedSectionDecode (
//
for (Index = 0; Index < HandlerInfo->NumberOfExtractHandler; Index ++) {
if (CompareGuid (HandlerInfo->ExtractHandlerGuidTable + Index, &(((EFI_GUID_DEFINED_SECTION *) InputSection)->SectionDefinitionGuid))) {
- break;
+ //
+ // Call the match handler to extract raw data for the input guided section.
+ //
+ return HandlerInfo->ExtractDecodeHandlerTable [Index] (
+ InputSection,
+ OutputBuffer,
+ ScratchBuffer,
+ AuthenticationStatus
+ );
}
}
//
// Not found, the input guided section is not supported.
//
- if (Index == HandlerInfo->NumberOfExtractHandler) {
- return RETURN_UNSUPPORTED;
- }
-
- //
- // Call the match handler to extract raw data for the input guided section.
- //
- return HandlerInfo->ExtractDecodeHandlerTable [Index] (
- InputSection,
- OutputBuffer,
- ScratchBuffer,
- AuthenticationStatus
- );
+ return RETURN_UNSUPPORTED;
}
diff --git a/MdePkg/Library/PeiExtractGuidedSectionLib/PeiExtractGuidedSectionLib.inf b/MdePkg/Library/PeiExtractGuidedSectionLib/PeiExtractGuidedSectionLib.inf
index d0853d261e..b84ee05581 100644
--- a/MdePkg/Library/PeiExtractGuidedSectionLib/PeiExtractGuidedSectionLib.inf
+++ b/MdePkg/Library/PeiExtractGuidedSectionLib/PeiExtractGuidedSectionLib.inf
@@ -42,7 +42,7 @@
DebugLib
HobLib
-[FixedPcd.common]
+[Pcd.common]
gEfiMdePkgTokenSpaceGuid.PcdMaximumGuidedExtractHandler