]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Fix issue from code scrub.
authorklu2 <klu2@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 23 Jan 2009 03:32:01 +0000 (03:32 +0000)
committerklu2 <klu2@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 23 Jan 2009 03:32:01 +0000 (03:32 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7349 6f19259b-4bc3-4df7-8a09-765794883524

MdeModulePkg/Universal/BdsDxe/BdsEntry.c
MdeModulePkg/Universal/BdsDxe/BootMaint/BootMaint.c
MdeModulePkg/Universal/BdsDxe/BootMaint/BootOption.c
MdeModulePkg/Universal/BdsDxe/BootMaint/ConsoleOption.c
MdeModulePkg/Universal/BdsDxe/BootMaint/UpdatePage.c
MdeModulePkg/Universal/BdsDxe/BootMaint/Variable.c
MdeModulePkg/Universal/BdsDxe/BootMngr/BootManager.c
MdeModulePkg/Universal/BdsDxe/DeviceMngr/DeviceManager.c
MdeModulePkg/Universal/BdsDxe/Hotkey.c
MdeModulePkg/Universal/BdsDxe/MemoryTest.c

index c70559e098fce893485c9dd1703638f694084af7..d8bf26a7bb339f4c4b67aea794a39608b576fe9a 100644 (file)
@@ -138,6 +138,14 @@ BdsBootDeviceSelect (
     //\r
     UnicodeSPrint (Buffer, sizeof (Buffer), L"Boot%04x", *mBootNext);\r
     BootOption = BdsLibVariableToOption (&BootLists, Buffer);\r
+    \r
+    //\r
+    // If fail to get boot option from variable, just return and do nothing.\r
+    //\r
+    if (BootOption == NULL) {\r
+      return;\r
+    }\r
+    \r
     BootOption->BootCurrent = *mBootNext;\r
   }\r
   //\r
index f93cfc48a0a38597eeec7c354fe96c9a475f92b8..1e3f01a0e9e653ddf6b65267efe45d1a3f8358ef 100644 (file)
@@ -580,6 +580,7 @@ ApplyChangeHandler (
     break;\r
 \r
   case FORM_BOOT_DEL_ID:\r
+    ASSERT (BootOptionMenu.MenuNumber <= (sizeof (CurrentFakeNVMap->BootOptionDel) / sizeof (UINT8)));\r
     for (Index = 0; Index < BootOptionMenu.MenuNumber; Index++) {\r
       NewMenuEntry            = BOpt_GetMenuEntry (&BootOptionMenu, Index);\r
       NewLoadContext          = (BM_LOAD_CONTEXT *) NewMenuEntry->VariableContext;\r
@@ -590,6 +591,7 @@ ApplyChangeHandler (
     break;\r
 \r
   case FORM_DRV_DEL_ID:\r
+    ASSERT (DriverOptionMenu.MenuNumber <= (sizeof (CurrentFakeNVMap->DriverOptionDel) / sizeof (UINT8)));\r
     for (Index = 0; Index < DriverOptionMenu.MenuNumber; Index++) {\r
       NewMenuEntry            = BOpt_GetMenuEntry (&DriverOptionMenu, Index);\r
       NewLoadContext          = (BM_LOAD_CONTEXT *) NewMenuEntry->VariableContext;\r
@@ -638,12 +640,16 @@ ApplyChangeHandler (
     NewTerminalContext                = (BM_TERMINAL_CONTEXT *) NewMenuEntry->VariableContext;\r
 \r
     NewTerminalContext->BaudRateIndex = CurrentFakeNVMap->COMBaudRate;\r
+    ASSERT (CurrentFakeNVMap->COMBaudRate < (sizeof (BaudRateList) / sizeof (BaudRateList[0])));\r
     NewTerminalContext->BaudRate      = BaudRateList[CurrentFakeNVMap->COMBaudRate].Value;\r
     NewTerminalContext->DataBitsIndex = CurrentFakeNVMap->COMDataRate;\r
+    ASSERT (CurrentFakeNVMap->COMDataRate < (sizeof (DataBitsList) / sizeof (DataBitsList[0])));\r
     NewTerminalContext->DataBits      = (UINT8) DataBitsList[CurrentFakeNVMap->COMDataRate].Value;\r
     NewTerminalContext->StopBitsIndex = CurrentFakeNVMap->COMStopBits;\r
+    ASSERT (CurrentFakeNVMap->COMStopBits < (sizeof (StopBitsList) / sizeof (StopBitsList[0])));\r
     NewTerminalContext->StopBits      = (UINT8) StopBitsList[CurrentFakeNVMap->COMStopBits].Value;\r
     NewTerminalContext->ParityIndex   = CurrentFakeNVMap->COMParity;\r
+    ASSERT (CurrentFakeNVMap->COMParity < (sizeof (ParityList) / sizeof (ParityList[0])));\r
     NewTerminalContext->Parity        = (UINT8) ParityList[CurrentFakeNVMap->COMParity].Value;\r
     NewTerminalContext->TerminalType  = CurrentFakeNVMap->COMTerminalType;\r
 \r
@@ -658,6 +664,7 @@ ApplyChangeHandler (
     break;\r
 \r
   case FORM_CON_IN_ID:\r
+    ASSERT ((ConsoleInpMenu.MenuNumber + TerminalMenu.MenuNumber) <= (sizeof (CurrentFakeNVMap->ConsoleCheck) / sizeof (UINT8)));\r
     for (Index = 0; Index < ConsoleInpMenu.MenuNumber; Index++) {\r
       NewMenuEntry                = BOpt_GetMenuEntry (&ConsoleInpMenu, Index);\r
       NewConsoleContext           = (BM_CONSOLE_CONTEXT *) NewMenuEntry->VariableContext;\r
@@ -674,6 +681,7 @@ ApplyChangeHandler (
     break;\r
 \r
   case FORM_CON_OUT_ID:\r
+    ASSERT ((ConsoleOutMenu.MenuNumber + TerminalMenu.MenuNumber) <= (sizeof (CurrentFakeNVMap->ConsoleCheck) / sizeof (UINT8)));\r
     for (Index = 0; Index < ConsoleOutMenu.MenuNumber; Index++) {\r
       NewMenuEntry                = BOpt_GetMenuEntry (&ConsoleOutMenu, Index);\r
       NewConsoleContext           = (BM_CONSOLE_CONTEXT *) NewMenuEntry->VariableContext;\r
@@ -690,6 +698,7 @@ ApplyChangeHandler (
     break;\r
 \r
   case FORM_CON_ERR_ID:\r
+    ASSERT ((ConsoleErrMenu.MenuNumber + TerminalMenu.MenuNumber) <= (sizeof (CurrentFakeNVMap->ConsoleCheck) / sizeof (UINT8)));\r
     for (Index = 0; Index < ConsoleErrMenu.MenuNumber; Index++) {\r
       NewMenuEntry                = BOpt_GetMenuEntry (&ConsoleErrMenu, Index);\r
       NewConsoleContext           = (BM_CONSOLE_CONTEXT *) NewMenuEntry->VariableContext;\r
@@ -752,12 +761,14 @@ DiscardChangeHandler (
     break;\r
 \r
   case FORM_BOOT_DEL_ID:\r
+    ASSERT (BootOptionMenu.MenuNumber <= (sizeof (CurrentFakeNVMap->BootOptionDel) / sizeof (CurrentFakeNVMap->BootOptionDel[0])));\r
     for (Index = 0; Index < BootOptionMenu.MenuNumber; Index++) {\r
       CurrentFakeNVMap->BootOptionDel[Index] = 0x00;\r
     }\r
     break;\r
 \r
   case FORM_DRV_DEL_ID:\r
+    ASSERT (DriverOptionMenu.MenuNumber <= (sizeof (CurrentFakeNVMap->DriverOptionDel) / sizeof (CurrentFakeNVMap->DriverOptionDel[0])));\r
     for (Index = 0; Index < DriverOptionMenu.MenuNumber; Index++) {\r
       CurrentFakeNVMap->DriverOptionDel[Index] = 0x00;\r
     }\r
index acfd548e5ec478bfb9c56559dc9dc1d799d5f6b4..e9caf5958a5f813fd62b0eeb8163099cb5f3a05d 100644 (file)
@@ -847,7 +847,8 @@ BOpt_FreeLegacyOptions (
 \r
   @param CallbackData The BMM context data.\r
 \r
-  @return The number of the Var Boot####.\r
+  @return EFI_NOT_FOUND Fail to find "BootOrder" variable.\r
+  @return EFI_SUCESS    Success build boot option menu.\r
 \r
 **/\r
 EFI_STATUS\r
@@ -892,7 +893,10 @@ BOpt_GetBootOptions (
                     &gEfiGlobalVariableGuid,\r
                     &BootOrderListSize\r
                     );\r
-\r
+  if (BootOrderList == NULL) {\r
+    return EFI_NOT_FOUND;\r
+  }\r
+  \r
   //\r
   // Get the BootNext from the Var\r
   //\r
@@ -1067,7 +1071,7 @@ BOpt_GetBootOptions (
     FreePool (BootOrderList);\r
   }\r
   BootOptionMenu.MenuNumber = MenuCount;\r
-  return MenuCount;\r
+  return EFI_SUCCESS;\r
 }\r
 \r
 /**\r
@@ -1493,9 +1497,9 @@ BOpt_GetDriverOptionNumber (
 \r
   @param CallbackData The BMM context data.\r
 \r
-  @return EFI_SUCESS The functin completes successfully.\r
+  @retval EFI_SUCESS           The functin completes successfully.\r
   @retval EFI_OUT_OF_RESOURCES Not enough memory to compete the operation.\r
-  \r
+  @retval EFI_NOT_FOUND        Fail to get "DriverOrder" variable.\r
 \r
 **/\r
 EFI_STATUS\r
@@ -1532,7 +1536,10 @@ BOpt_GetDriverOptions (
                       &gEfiGlobalVariableGuid,\r
                       &DriverOrderListSize\r
                       );\r
-\r
+  if (DriverOrderList == NULL) {\r
+    return EFI_NOT_FOUND;\r
+  }\r
+  \r
   for (Index = 0; Index < DriverOrderListSize / sizeof (UINT16); Index++) {\r
     UnicodeSPrint (\r
       DriverString,\r
index 0fc187aca39a796281ae7defc930d3837c0fa27d..da0a8389fa43ebbd9596d5d819fc738272f33d70 100644 (file)
@@ -14,21 +14,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 \r
 #include "BootMaint.h"\r
 \r
-/**\r
-  Function creates a device path data structure that identically matches the\r
-  device path passed in.\r
-\r
-  @param DevPath         A pointer to a device path data structure.\r
-\r
-  @return        The new copy of DevPath is created to identically match the input.\r
-  @retval  NULL  Otherwise, NULL is returned.\r
-\r
-**/\r
-EFI_DEVICE_PATH_PROTOCOL  *\r
-DevicePathInstanceDup (\r
-  IN EFI_DEVICE_PATH_PROTOCOL  *DevPath\r
-  );\r
-\r
 /**\r
   Update Com Ports attributes from DevicePath\r
 \r
@@ -423,7 +408,7 @@ LocateSerialIo (
 \r
       NewTerminalContext = (BM_TERMINAL_CONTEXT *) NewMenuEntry->VariableContext;\r
       CopyMem (&NewMenuEntry->OptionNumber, &Acpi->UID, sizeof (UINT32));\r
-      NewTerminalContext->DevicePath = DevicePathInstanceDup (DevicePath);\r
+      NewTerminalContext->DevicePath = DuplicateDevicePath (DevicePath);\r
       //\r
       // BugBug: I have no choice, calling EfiLibStrFromDatahub will hang the system!\r
       // coz' the misc data for each platform is not correct, actually it's the device path stored in\r
@@ -547,7 +532,6 @@ LocateSerialIo (
 /**\r
   Update Com Ports attributes from DevicePath\r
 \r
-\r
   @param DevicePath      DevicePath that contains Com ports\r
 \r
   @retval EFI_SUCCESS   The update is successful.\r
@@ -665,54 +649,6 @@ UpdateComAttributeFromVariable (
   return EFI_SUCCESS;\r
 }\r
 \r
-/**\r
-  Function creates a device path data structure that identically matches the\r
-  device path passed in.\r
-\r
-\r
-  @param DevPath         A pointer to a device path data structure.\r
-\r
-  @return        The new copy of DevPath is created to identically match the input.\r
-  @retval  NULL  Otherwise, NULL is returned.\r
-\r
-**/\r
-EFI_DEVICE_PATH_PROTOCOL *\r
-DevicePathInstanceDup (\r
-  IN EFI_DEVICE_PATH_PROTOCOL  *DevPath\r
-  )\r
-{\r
-  EFI_DEVICE_PATH_PROTOCOL  *NewDevPath;\r
-  EFI_DEVICE_PATH_PROTOCOL  *DevicePathInst;\r
-  EFI_DEVICE_PATH_PROTOCOL  *Temp;\r
-  UINT8                     *Ptr;\r
-  UINTN                     Size;\r
-\r
-  //\r
-  // get the size of an instance from the input\r
-  //\r
-  Temp            = DevPath;\r
-  DevicePathInst  = GetNextDevicePathInstance (&Temp, &Size);\r
-\r
-  //\r
-  // Make a copy and set proper end type\r
-  //\r
-  NewDevPath = NULL;\r
-  if (Size != 0) {\r
-    NewDevPath = AllocateZeroPool (Size);\r
-    ASSERT (NewDevPath != NULL);\r
-  }\r
-\r
-  if (NewDevPath != NULL) {\r
-    CopyMem (NewDevPath, DevicePathInst, Size);\r
-    Ptr = (UINT8 *) NewDevPath;\r
-    Ptr += Size - sizeof (EFI_DEVICE_PATH_PROTOCOL);\r
-    Temp = (EFI_DEVICE_PATH_PROTOCOL *) Ptr;\r
-    SetDevicePathEndNode (Temp);\r
-  }\r
-\r
-  return NewDevPath;\r
-}\r
-\r
 /**\r
   Build up Console Menu based on types passed in. The type can\r
   be BM_CONSOLE_IN_CONTEXT_SELECT, BM_CONSOLE_OUT_CONTEXT_SELECT\r
@@ -818,7 +754,7 @@ GetConsoleMenu (
     NewConsoleContext             = (BM_CONSOLE_CONTEXT *) NewMenuEntry->VariableContext;\r
     NewMenuEntry->OptionNumber    = Index2;\r
 \r
-    NewConsoleContext->DevicePath = DevicePathInstanceDup (DevicePathInst);\r
+    NewConsoleContext->DevicePath = DuplicateDevicePath (DevicePathInst);\r
     NewMenuEntry->DisplayString   = EfiLibStrFromDatahub (NewConsoleContext->DevicePath);\r
     if (NULL == NewMenuEntry->DisplayString) {\r
       NewMenuEntry->DisplayString = DevicePathToStr (NewConsoleContext->DevicePath);\r
index 486f2fdcfc52ba786da688c3878cc343475be322..9fa2556cd5029e60b6ee7706f0878bee33608237 100644 (file)
@@ -162,6 +162,7 @@ BootThisFile (
   BDS_COMMON_OPTION *Option;\r
 \r
   Option = (BDS_COMMON_OPTION *) AllocatePool (sizeof (BDS_COMMON_OPTION));\r
+  ASSERT (Option != NULL);\r
   Option->Description     = FileContext->FileName;\r
   Option->DevicePath      = FileContext->DevicePath;\r
   Option->LoadOptionsSize = 0;\r
@@ -236,6 +237,7 @@ UpdateBootDelPage (
   UpdatePageStart (CallbackData);\r
   CreateMenuStringToken (CallbackData, CallbackData->BmmHiiHandle, &BootOptionMenu);\r
 \r
+  ASSERT (BootOptionMenu.MenuNumber <= (sizeof (CallbackData->BmmFakeNvData.BootOptionDel) / sizeof (CallbackData->BmmFakeNvData.BootOptionDel[0])));\r
   for (Index = 0; Index < BootOptionMenu.MenuNumber; Index++) {\r
     NewMenuEntry    = BOpt_GetMenuEntry (&BootOptionMenu, Index);\r
     NewLoadContext  = (BM_LOAD_CONTEXT *) NewMenuEntry->VariableContext;\r
@@ -316,7 +318,8 @@ UpdateDrvDelPage (
   UpdatePageStart (CallbackData);\r
 \r
   CreateMenuStringToken (CallbackData, CallbackData->BmmHiiHandle, &DriverOptionMenu);\r
-\r
+  \r
+  ASSERT (DriverOptionMenu.MenuNumber <= (sizeof (CallbackData->BmmFakeNvData.DriverOptionDel) / sizeof (CallbackData->BmmFakeNvData.DriverOptionDel[0])));\r
   for (Index = 0; Index < DriverOptionMenu.MenuNumber; Index++) {\r
     NewMenuEntry            = BOpt_GetMenuEntry (&DriverOptionMenu, Index);\r
 \r
@@ -434,6 +437,7 @@ UpdateConsolePage (
 \r
   UpdatePageStart (CallbackData);\r
 \r
+  ASSERT (ConsoleMenu->MenuNumber <= (sizeof (CallbackData->BmmFakeNvData.ConsoleCheck) / sizeof (CallbackData->BmmFakeNvData.ConsoleCheck[0])));\r
   for (Index = 0; Index < ConsoleMenu->MenuNumber; Index++) {\r
     NewMenuEntry      = BOpt_GetMenuEntry (ConsoleMenu, Index);\r
     NewConsoleContext = (BM_CONSOLE_CONTEXT *) NewMenuEntry->VariableContext;\r
@@ -518,10 +522,11 @@ UpdateOrderPage (
   ZeroMem (CallbackData->BmmFakeNvData.OptionOrder, 100);\r
 \r
   IfrOptionList = AllocateZeroPool (sizeof (IFR_OPTION) * OptionMenu->MenuNumber);\r
-  if (NULL == IfrOptionList) {\r
+  if (IfrOptionList == NULL) {\r
     return ;\r
   }\r
-\r
+  \r
+  ASSERT (OptionMenu->MenuNumber <= (sizeof (IfrOptionList) / sizeof (IfrOptionList[0])));\r
   for (Index = 0; Index < OptionMenu->MenuNumber; Index++) {\r
     NewMenuEntry = BOpt_GetMenuEntry (OptionMenu, Index);\r
     IfrOptionList[Index].StringToken = NewMenuEntry->DisplayStringToken;\r
@@ -736,12 +741,15 @@ UpdateConModePage (
     if (EFI_ERROR (Status)) {\r
       continue;\r
     }\r
+    \r
     //\r
     // Build mode string Column x Row\r
     //\r
     UnicodeValueToString (ModeString, 0, Col, 0);\r
+    ASSERT ((StrLen (ModeString)  + 1) < (sizeof (ModeString) / sizeof (ModeString[0])));\r
     StrCat (ModeString, L" x ");\r
     UnicodeValueToString (RowString, 0, Row, 0);\r
+    ASSERT ((StrLen (ModeString)  + StrLen(RowString)) < (sizeof (ModeString) / sizeof (ModeString[0])));\r
     StrCat (ModeString, RowString);\r
 \r
     HiiLibNewString (CallbackData->BmmHiiHandle, &ModeToken[Index], ModeString);\r
@@ -1023,7 +1031,11 @@ GetLegacyBootOptionVar (
                   &gEfiGlobalVariableGuid,\r
                   &OrderSize\r
                   );\r
-\r
+                  \r
+  if (OrderBuffer == NULL) {\r
+    return NULL;\r
+  }\r
+  \r
   for (Index = 0; Index < OrderSize / sizeof (UINT16); Index++) {\r
     UnicodeSPrint (StrTemp, 100, L"Boot%04x", OrderBuffer[Index]);\r
     OptionBuffer = BdsLibGetVariableAndSize (\r
@@ -1177,6 +1189,9 @@ UpdateSetLegacyDeviceOrderPage (
     OldData     = CallbackData->BmmOldFakeNVData.LegacyBEV;\r
     break;\r
 \r
+  default:\r
+    DEBUG ((EFI_D_ERROR, "Invalid command ID for updating page!\n"));\r
+    return;\r
   }\r
 \r
   CreateMenuStringToken (CallbackData, CallbackData->BmmHiiHandle, OptionMenu);\r
index 55af813d6892dde83b27795a8d3ca7c441aa4ffa..5cc7abcb5a74be3d63883195961796492fa5e9aa 100644 (file)
@@ -437,6 +437,8 @@ Var_UpdateConsoleOption (
         ) {\r
       Vendor.Header.Type    = MESSAGING_DEVICE_PATH;\r
       Vendor.Header.SubType = MSG_VENDOR_DP;\r
+      \r
+      ASSERT (NewTerminalContext->TerminalType < (sizeof (TerminalTypeGuid) / sizeof (TerminalTypeGuid[0])));\r
       CopyMem (\r
         &Vendor.Guid,\r
         &TerminalTypeGuid[NewTerminalContext->TerminalType],\r
@@ -977,6 +979,7 @@ Var_UpdateBootOrder (
     FreePool (BootOrderList);\r
   }\r
 \r
+  ASSERT (BootOptionMenu.MenuNumber <= (sizeof (CallbackData->BmmFakeNvData.OptionOrder) / sizeof (CallbackData->BmmFakeNvData.OptionOrder[0])));\r
   for (Index = 0; Index < BootOptionMenu.MenuNumber; Index++) {\r
     NewBootOrderList[Index] = (UINT16) (CallbackData->BmmFakeNvData.OptionOrder[Index] - 1);\r
   }\r
@@ -1048,6 +1051,7 @@ Var_UpdateDriverOrder (
     FreePool (DriverOrderList);\r
   }\r
 \r
+  ASSERT (DriverOrderListSize <= (sizeof (CallbackData->BmmFakeNvData.OptionOrder) / sizeof (CallbackData->BmmFakeNvData.OptionOrder[0])));\r
   for (Index = 0; Index < DriverOrderListSize; Index++) {\r
     NewDriverOrderList[Index] = (UINT16) (CallbackData->BmmFakeNvData.OptionOrder[Index] - 1);\r
   }\r
index d0ac2fc1dd8b0d91b03bdc2e8798cad19d726889..a1612cd1b1b43a5903c5857756c9522bdcabd7e7 100644 (file)
@@ -230,6 +230,7 @@ CallBootManager (
     TempStr = DevicePathToStr (Option->DevicePath);\r
     TempSize = StrSize (TempStr);\r
     HelpString = AllocateZeroPool (TempSize + StrSize (L"Device Path : "));\r
+    ASSERT (HelpString != NULL);\r
     StrCat (HelpString, L"Device Path : ");\r
     StrCat (HelpString, TempStr);\r
 \r
index f0e07ecc212765d533555ea0c9c08a4b24714b6b..715e1013e7cfea7211aacad0fb1b23b2e189ff29 100644 (file)
@@ -234,7 +234,7 @@ CallDeviceManager (
   // Get all the Hii handles\r
   //\r
   Status = HiiLibGetHiiHandles (&HandleBufferLength, &HiiHandles);\r
-  ASSERT_EFI_ERROR (Status);\r
+  ASSERT_EFI_ERROR (Status && (HiiHandles != NULL));\r
 \r
   HiiHandle = gDeviceManagerPrivate.HiiHandle;\r
 \r
index 9efba6d730cbeb209d5ff7ee93a5de6f436d3205..bfad7ce7552b6ea94fe9a559c692ab8da1c86664 100644 (file)
@@ -308,7 +308,7 @@ UnregisterHotkey (
                          information for the key that was pressed.\r
 \r
   @retval  EFI_SUCCESS   KeyData is successfully processed.\r
-\r
+  @return  EFI_NOT_FOUND Fail to find boot option variable.\r
 **/\r
 EFI_STATUS\r
 HotkeyCallback (\r
@@ -344,6 +344,7 @@ HotkeyCallback (
     //\r
     // Is this Key Stroke we are waiting for?\r
     //\r
+    ASSERT (Hotkey->WaitingKey < (sizeof (Hotkey->KeyData) / sizeof (Hotkey->KeyData[0])));\r
     HotkeyData = &Hotkey->KeyData[Hotkey->WaitingKey];\r
     if ((KeyData->Key.ScanCode == HotkeyData->Key.ScanCode) &&\r
        (KeyData->Key.UnicodeChar == HotkeyData->Key.UnicodeChar) &&\r
@@ -389,6 +390,9 @@ HotkeyCallback (
 \r
       UnicodeSPrint (Buffer, sizeof (Buffer), L"Boot%04x", Hotkey->BootOptionNumber);\r
       BootOption = BdsLibVariableToOption (&BootLists, Buffer);\r
+      if (BootOption == NULL) {\r
+        return EFI_NOT_FOUND;\r
+      }\r
       BootOption->BootCurrent = Hotkey->BootOptionNumber;\r
       BdsLibConnectDevicePath (BootOption->DevicePath);\r
 \r
index 747ebf72c60fbc6b2d08999bc042a3fde06bfb73..fabdf243108b760f676b9e5502fe7b3957e6a6b3 100644 (file)
@@ -86,7 +86,7 @@ PlatformBdsShowProgress (
   if (GraphicsOutput != NULL) {\r
     SizeOfX = GraphicsOutput->Mode->Info->HorizontalResolution;\r
     SizeOfY = GraphicsOutput->Mode->Info->VerticalResolution;\r
-  } else if (FeaturePcdGet (PcdUgaConsumeSupport)) {\r
+  } else if (UgaDraw != NULL) {\r
     Status = UgaDraw->GetMode (\r
                         UgaDraw,\r
                         &SizeOfX,\r