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:
@@ -281,13 +281,13 @@ HiiLibGetHiiHandles (
|
||||
OUT EFI_HII_HANDLE **HiiHandleBuffer
|
||||
)
|
||||
{
|
||||
UINTN BufferLength;
|
||||
EFI_STATUS Status;
|
||||
|
||||
ASSERT (HandleBufferLength != NULL);
|
||||
ASSERT (HiiHandleBuffer != NULL);
|
||||
|
||||
BufferLength = 0;
|
||||
*HandleBufferLength = 0;
|
||||
*HiiHandleBuffer = NULL;
|
||||
|
||||
//
|
||||
// Try to find the actual buffer size for HiiHandle Buffer.
|
||||
@@ -296,27 +296,26 @@ HiiLibGetHiiHandles (
|
||||
mHiiDatabaseProt,
|
||||
EFI_HII_PACKAGE_TYPE_ALL,
|
||||
NULL,
|
||||
&BufferLength,
|
||||
HandleBufferLength,
|
||||
*HiiHandleBuffer
|
||||
);
|
||||
|
||||
|
||||
if (Status == EFI_BUFFER_TOO_SMALL) {
|
||||
*HiiHandleBuffer = AllocateZeroPool (BufferLength);
|
||||
*HiiHandleBuffer = AllocateZeroPool (*HandleBufferLength);
|
||||
ASSERT (*HiiHandleBuffer != NULL);
|
||||
Status = mHiiDatabaseProt->ListPackageLists (
|
||||
mHiiDatabaseProt,
|
||||
EFI_HII_PACKAGE_TYPE_ALL,
|
||||
NULL,
|
||||
&BufferLength,
|
||||
HandleBufferLength,
|
||||
*HiiHandleBuffer
|
||||
);
|
||||
//
|
||||
// we should not fail here.
|
||||
//
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
}
|
||||
|
||||
*HandleBufferLength = BufferLength;
|
||||
if (EFI_ERROR (Status)) {
|
||||
FreePool (*HiiHandleBuffer);
|
||||
*HiiHandleBuffer = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
Reference in New Issue
Block a user