summaryrefslogtreecommitdiff
path: root/MdeModulePkg/Library/ExtendedIfrSupportLib
diff options
context:
space:
mode:
authorqwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524>2009-01-20 02:00:46 +0000
committerqwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524>2009-01-20 02:00:46 +0000
commitfa7b3168fdfc8744f658a5ba5c4e433fc0ae7c82 (patch)
treeb6247229dfecf191f45051e3b645e64d09406123 /MdeModulePkg/Library/ExtendedIfrSupportLib
parentd0720b57060cc8f8bd0c21cb9937bbb87b420d36 (diff)
downloadedk2-fa7b3168fdfc8744f658a5ba5c4e433fc0ae7c82.zip
edk2-fa7b3168fdfc8744f658a5ba5c4e433fc0ae7c82.tar.gz
edk2-fa7b3168fdfc8744f658a5ba5c4e433fc0ae7c82.tar.bz2
K8:
1) Add in "check-for-null" before dereferencing a pointer. 2) unify the handling of EFI_OUT_OF_RESOURCE case. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7310 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'MdeModulePkg/Library/ExtendedIfrSupportLib')
-rw-r--r--MdeModulePkg/Library/ExtendedIfrSupportLib/Common.c15
-rw-r--r--MdeModulePkg/Library/ExtendedIfrSupportLib/Form.c22
2 files changed, 24 insertions, 13 deletions
diff --git a/MdeModulePkg/Library/ExtendedIfrSupportLib/Common.c b/MdeModulePkg/Library/ExtendedIfrSupportLib/Common.c
index 56f2b79..3853a2e 100644
--- a/MdeModulePkg/Library/ExtendedIfrSupportLib/Common.c
+++ b/MdeModulePkg/Library/ExtendedIfrSupportLib/Common.c
@@ -100,14 +100,19 @@ IfrLibExtractClassFromHiiHandle (
BufferSize = 0;
HiiPackageList = NULL;
Status = gIfrLibHiiDatabase->ExportPackageLists (gIfrLibHiiDatabase, Handle, &BufferSize, HiiPackageList);
+ //
+ // Handle is a invalid handle. Check if Handle is corrupted.
+ //
ASSERT (Status != EFI_NOT_FOUND);
+ //
+ // The return status should always be EFI_BUFFER_TOO_SMALL as input buffer's size is 0.
+ //
+ ASSERT (Status == EFI_BUFFER_TOO_SMALL);
- if (Status == EFI_BUFFER_TOO_SMALL) {
- HiiPackageList = AllocatePool (BufferSize);
- ASSERT (HiiPackageList != NULL);
+ HiiPackageList = AllocatePool (BufferSize);
+ ASSERT (HiiPackageList != NULL);
- Status = gIfrLibHiiDatabase->ExportPackageLists (gIfrLibHiiDatabase, Handle, &BufferSize, HiiPackageList);
- }
+ Status = gIfrLibHiiDatabase->ExportPackageLists (gIfrLibHiiDatabase, Handle, &BufferSize, HiiPackageList);
if (EFI_ERROR (Status)) {
return Status;
}
diff --git a/MdeModulePkg/Library/ExtendedIfrSupportLib/Form.c b/MdeModulePkg/Library/ExtendedIfrSupportLib/Form.c
index 7f7af9c..793efdf 100644
--- a/MdeModulePkg/Library/ExtendedIfrSupportLib/Form.c
+++ b/MdeModulePkg/Library/ExtendedIfrSupportLib/Form.c
@@ -376,15 +376,21 @@ IfrLibUpdateForm (
BufferSize = 0;
HiiPackageList = NULL;
Status = HiiDatabase->ExportPackageLists (HiiDatabase, Handle, &BufferSize, HiiPackageList);
- if (Status == EFI_BUFFER_TOO_SMALL) {
- HiiPackageList = AllocatePool (BufferSize);
- ASSERT (HiiPackageList != NULL);
+ //
+ // Handle is a invalid handle. Check if Handle is corrupted.
+ //
+ ASSERT (Status != EFI_NOT_FOUND);
+ //
+ // The return status should always be EFI_BUFFER_TOO_SMALL as input buffer's size is 0.
+ //
+ ASSERT (Status == EFI_BUFFER_TOO_SMALL);
+ HiiPackageList = AllocatePool (BufferSize);
+ ASSERT (HiiPackageList != NULL);
- Status = HiiDatabase->ExportPackageLists (HiiDatabase, Handle, &BufferSize, HiiPackageList);
- if (EFI_ERROR (Status)) {
- FreePool (HiiPackageList);
- return Status;
- }
+ Status = HiiDatabase->ExportPackageLists (HiiDatabase, Handle, &BufferSize, HiiPackageList);
+ if (EFI_ERROR (Status)) {
+ FreePool (HiiPackageList);
+ return Status;
}
//