Fix a bug in UefiDefaultsToFwDefaults NULL should be returned if no Variable pack is found.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5719 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
qwang12 2008-08-23 09:37:32 +00:00
parent 4b79797eea
commit 1e22d0b02c
1 changed files with 12 additions and 2 deletions

View File

@ -652,6 +652,7 @@ UefiDefaultsToFwDefaults (
UINT16 DefaultId;
EFI_HII_VARIABLE_PACK *Pack;
EFI_HII_VARIABLE_PACK_LIST *PackList;
UINTN Index;
if (DefaultMask == FRAMEWORK_EFI_IFR_FLAG_DEFAULT) {
DefaultId = EFI_HII_DEFAULT_CLASS_STANDARD;
@ -685,6 +686,11 @@ UefiDefaultsToFwDefaults (
List = GetNextNode (ListHead, List);
}
if (Count == 0) {
*VariablePackList = NULL;
return EFI_NOT_FOUND;
}
Size = Size + Count * (sizeof (EFI_HII_VARIABLE_PACK_LIST) + sizeof (EFI_HII_VARIABLE_PACK));
*VariablePackList = AllocateZeroPool (Size);
@ -694,6 +700,7 @@ UefiDefaultsToFwDefaults (
PackList = (EFI_HII_VARIABLE_PACK_LIST *) *VariablePackList;
Pack = (EFI_HII_VARIABLE_PACK *) (PackList + 1);
Index = 0;
while (!IsNull (ListHead, List)) {
Node = UEFI_IFR_BUFFER_STORAGE_NODE_FROM_LIST(List);
@ -727,10 +734,13 @@ UefiDefaultsToFwDefaults (
Size += sizeof (EFI_HII_VARIABLE_PACK_LIST);
//
// initialize EFI_HII_VARIABLE_PACK_LIST
// Initialize EFI_HII_VARIABLE_PACK_LIST
//
PackList->VariablePack = Pack;
PackList->NextVariablePack = (EFI_HII_VARIABLE_PACK_LIST *)((UINT8 *) PackList + Size);
Index++;
if (Index < Count) {
PackList->NextVariablePack = (EFI_HII_VARIABLE_PACK_LIST *)((UINT8 *) PackList + Size);
}
}