X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=MdeModulePkg%2FLibrary%2FBootMaintenanceManagerUiLib%2FBootOption.c;h=0bd3170872c799c84da9342410cf97fedd6af3f2;hp=a375d61dd3963bfeba0745d6132e530568a7a2a9;hb=97033ebfa3cb10562c434a8927e2cba9e3940ec7;hpb=67013151bafeef044920e457aa275f617b5c6485 diff --git a/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootOption.c b/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootOption.c index a375d61dd3..0bd3170872 100644 --- a/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootOption.c +++ b/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootOption.c @@ -5,7 +5,7 @@ Boot option manipulation -Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.
+Copyright (c) 2004 - 2016, 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 @@ -116,7 +116,6 @@ BOpt_DestroyMenuEntry ( case BM_LOAD_CONTEXT_SELECT: LoadContext = (BM_LOAD_CONTEXT *) MenuEntry->VariableContext; FreePool (LoadContext->FilePathList); - FreePool (LoadContext->LoadOption); if (LoadContext->OptionalData != NULL) { FreePool (LoadContext->OptionalData); } @@ -249,7 +248,6 @@ BOpt_GetBootOptions ( UINTN Index; UINT16 BootString[10]; UINT8 *LoadOptionFromVar; - UINT8 *LoadOption; UINTN BootOptionSize; BOOLEAN BootNextFlag; UINT16 *BootOrderList; @@ -313,14 +311,6 @@ BOpt_GetBootOptions ( continue; } - LoadOption = AllocateZeroPool (BootOptionSize); - if (LoadOption == NULL) { - continue; - } - - CopyMem (LoadOption, LoadOptionFromVar, BootOptionSize); - FreePool (LoadOptionFromVar); - if (BootNext != NULL) { BootNextFlag = (BOOLEAN) (*BootNext == BootOrderList[Index]); } else { @@ -332,18 +322,17 @@ BOpt_GetBootOptions ( NewLoadContext = (BM_LOAD_CONTEXT *) NewMenuEntry->VariableContext; - LoadOptionPtr = LoadOption; - LoadOptionEnd = LoadOption + BootOptionSize; + LoadOptionPtr = LoadOptionFromVar; + LoadOptionEnd = LoadOptionFromVar + BootOptionSize; NewMenuEntry->OptionNumber = BootOrderList[Index]; - NewLoadContext->LoadOptionModified = FALSE; NewLoadContext->Deleted = FALSE; NewLoadContext->IsBootNext = BootNextFlag; // // Is a Legacy Device? // - Ptr = (UINT8 *) LoadOption; + Ptr = (UINT8 *) LoadOptionFromVar; // // Attribute = *(UINT32 *)Ptr; @@ -374,13 +363,8 @@ BOpt_GetBootOptions ( // for easy use with following LOAD_OPTION // embedded in this struct // - NewLoadContext->LoadOption = LoadOption; - NewLoadContext->LoadOptionSize = BootOptionSize; NewLoadContext->Attributes = *(UINT32 *) LoadOptionPtr; - NewLoadContext->IsActive = (BOOLEAN) (NewLoadContext->Attributes & LOAD_OPTION_ACTIVE); - - NewLoadContext->ForceReconnect = (BOOLEAN) (NewLoadContext->Attributes & LOAD_OPTION_FORCE_RECONNECT); LoadOptionPtr += sizeof (UINT32); @@ -426,12 +410,11 @@ BOpt_GetBootOptions ( LoadOptionPtr, OptionalDataSize ); - - NewLoadContext->OptionalDataSize = OptionalDataSize; } InsertTailList (&BootOptionMenu.Head, &NewMenuEntry->Link); MenuCount++; + FreePool (LoadOptionFromVar); } EfiBootManagerFreeLoadOptions (BootOption, BootOptionCount); @@ -441,6 +424,7 @@ BOpt_GetBootOptions ( if (BootOrderList != NULL) { FreePool (BootOrderList); } + BootOptionMenu.MenuNumber = MenuCount; return EFI_SUCCESS; } @@ -650,7 +634,6 @@ BOpt_GetDriverOptions ( UINTN Index; UINT16 DriverString[12]; UINT8 *LoadOptionFromVar; - UINT8 *LoadOption; UINTN DriverOptionSize; UINT16 *DriverOrderList; @@ -691,13 +674,6 @@ BOpt_GetDriverOptions ( continue; } - LoadOption = AllocateZeroPool (DriverOptionSize); - if (LoadOption == NULL) { - continue; - } - - CopyMem (LoadOption, LoadOptionFromVar, DriverOptionSize); - FreePool (LoadOptionFromVar); NewMenuEntry = BOpt_CreateMenuEntry (BM_LOAD_CONTEXT_SELECT); if (NULL == NewMenuEntry) { @@ -705,10 +681,9 @@ BOpt_GetDriverOptions ( } NewLoadContext = (BM_LOAD_CONTEXT *) NewMenuEntry->VariableContext; - LoadOptionPtr = LoadOption; - LoadOptionEnd = LoadOption + DriverOptionSize; + LoadOptionPtr = LoadOptionFromVar; + LoadOptionEnd = LoadOptionFromVar + DriverOptionSize; NewMenuEntry->OptionNumber = DriverOrderList[Index]; - NewLoadContext->LoadOptionModified = FALSE; NewLoadContext->Deleted = FALSE; NewLoadContext->IsLegacy = FALSE; @@ -717,13 +692,8 @@ BOpt_GetDriverOptions ( // for easy use with following LOAD_OPTION // embedded in this struct // - NewLoadContext->LoadOption = LoadOption; - NewLoadContext->LoadOptionSize = DriverOptionSize; NewLoadContext->Attributes = *(UINT32 *) LoadOptionPtr; - NewLoadContext->IsActive = (BOOLEAN) (NewLoadContext->Attributes & LOAD_OPTION_ACTIVE); - - NewLoadContext->ForceReconnect = (BOOLEAN) (NewLoadContext->Attributes & LOAD_OPTION_FORCE_RECONNECT); LoadOptionPtr += sizeof (UINT32); @@ -771,16 +741,17 @@ BOpt_GetDriverOptions ( OptionalDataSize ); - NewLoadContext->OptionalDataSize = OptionalDataSize; } InsertTailList (&DriverOptionMenu.Head, &NewMenuEntry->Link); + FreePool (LoadOptionFromVar); } if (DriverOrderList != NULL) { FreePool (DriverOrderList); } + DriverOptionMenu.MenuNumber = Index; return EFI_SUCCESS;