]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/UpdatePage.c
Allocated one buffer to for option->description, since it may be released by BdsLibBo...
[mirror_edk2.git] / IntelFrameworkModulePkg / Universal / BdsDxe / BootMaint / UpdatePage.c
index dcc1fe2a13e6f442c4566173379e2159740ff3ac..8914b439ef4340dd7e81e6320659531849f2a8a9 100644 (file)
@@ -180,7 +180,7 @@ BootThisFile (
 \r
   Option = (BDS_COMMON_OPTION *) AllocatePool (sizeof (BDS_COMMON_OPTION));\r
   ASSERT (Option != NULL);\r
-  Option->Description     = FileContext->FileName;\r
+  Option->Description     = (CHAR16 *) AllocateCopyPool (StrSize (FileContext->FileName), FileContext->FileName);\r
   Option->DevicePath      = FileContext->DevicePath;\r
   Option->LoadOptionsSize = 0;\r
   Option->LoadOptions     = NULL;\r
@@ -459,8 +459,8 @@ 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
+  for (Index = 0; ((Index < ConsoleMenu->MenuNumber) && \\r
+       (Index < (sizeof (CallbackData->BmmFakeNvData.ConsoleCheck) / sizeof (UINT8)))) ; Index++) {\r
     NewMenuEntry      = BOpt_GetMenuEntry (ConsoleMenu, Index);\r
     NewConsoleContext = (BM_CONSOLE_CONTEXT *) NewMenuEntry->VariableContext;\r
     CheckFlags        = 0;\r
@@ -484,11 +484,13 @@ UpdateConsolePage (
       );\r
   }\r
 \r
-  for (Index2 = 0; Index2 < TerminalMenu.MenuNumber; Index2++) {\r
+  for (Index2 = 0; ((Index2 < TerminalMenu.MenuNumber) && \\r
+       (Index2 < (sizeof (CallbackData->BmmFakeNvData.ConsoleCheck) / sizeof (UINT8)))); Index2++) {\r
     CheckFlags          = 0;\r
     NewMenuEntry        = BOpt_GetMenuEntry (&TerminalMenu, Index2);\r
     NewTerminalContext  = (BM_TERMINAL_CONTEXT *) NewMenuEntry->VariableContext;\r
 \r
+    ASSERT (Index < MAX_MENU_NUMBER);\r
     if (((NewTerminalContext->IsConIn != 0) && (UpdatePageId == FORM_CON_IN_ID)) ||\r
         ((NewTerminalContext->IsConOut != 0) && (UpdatePageId == FORM_CON_OUT_ID)) ||\r
         ((NewTerminalContext->IsStdErr != 0) && (UpdatePageId == FORM_CON_ERR_ID))\r
@@ -548,7 +550,19 @@ UpdateOrderPage (
   OptionsOpCodeHandle = HiiAllocateOpCodeHandle ();\r
   ASSERT (OptionsOpCodeHandle != NULL);\r
   \r
-  for (Index = 0; Index < OptionMenu->MenuNumber; Index++) {\r
+  for (\r
+        Index = 0;\r
+        (\r
+          (Index < OptionMenu->MenuNumber) &&\r
+          (Index <\r
+            (\r
+              sizeof (CallbackData->BmmFakeNvData.OptionOrder) /\r
+              sizeof (UINT8)\r
+            )\r
+          )\r
+        );\r
+        Index++\r
+      ) {\r
     NewMenuEntry = BOpt_GetMenuEntry (OptionMenu, Index);\r
     HiiCreateOneOfOptionOpCode (\r
       OptionsOpCodeHandle,\r
@@ -740,9 +754,8 @@ UpdateConModePage (
   UINTN                         Index;\r
   UINTN                         Col;\r
   UINTN                         Row;\r
-  CHAR16                        RowString[50];\r
   CHAR16                        ModeString[50];\r
-  UINTN                         TempStringLen;\r
+  CHAR16                        *PStr;\r
   UINTN                         MaxMode;\r
   UINTN                         ValidMode;\r
   EFI_STRING_ID                 *ModeToken;\r
@@ -797,12 +810,11 @@ UpdateConModePage (
     //\r
     // Build mode string Column x Row\r
     //\r
-    TempStringLen = UnicodeValueToString (ModeString, 0, Col, 0);\r
-    ASSERT ((TempStringLen + StrLen (L" x ")) < (sizeof (ModeString) / sizeof (ModeString[0])));\r
-    StrCat (ModeString, L" x ");\r
-    TempStringLen = UnicodeValueToString (RowString, 0, Row, 0);\r
-    ASSERT ((StrLen (ModeString)  + TempStringLen) < (sizeof (ModeString) / sizeof (ModeString[0])));\r
-    StrCat (ModeString, RowString);\r
+    UnicodeValueToString (ModeString, 0, Col, 0);\r
+    PStr = &ModeString[0];\r
+    StrnCat (PStr, L" x ", StrLen(L" x ") + 1);\r
+    PStr = PStr + StrLen (PStr);\r
+    UnicodeValueToString (PStr , 0, Row, 0);\r
 \r
     ModeToken[Index] = HiiSetString (CallbackData->BmmHiiHandle, 0, ModeString, NULL);\r
 \r