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
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
//
|
||||
|
Reference in New Issue
Block a user