]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/SetupBrowserDxe/ProcessOptions.c
Add check for NULL pointer.
[mirror_edk2.git] / MdeModulePkg / Universal / SetupBrowserDxe / ProcessOptions.c
index 49c7ff8c5a71ddc04bf0477a0c0f1b9fbb71757e..447e6a2718d94f07b072aa57d8da862d495e43ef 100644 (file)
@@ -383,7 +383,7 @@ ProcessOptions (
           Status = SetQuestionValue (Selection->FormSet, Selection->Form, Question, TRUE);\r
           UpdateStatusBar (NV_UPDATE_REQUIRED, Question->QuestionFlags, TRUE);\r
 \r
-          gBS->FreePool (*OptionString);\r
+          FreePool (*OptionString);\r
           *OptionString = NULL;\r
           return EFI_NOT_FOUND;\r
         }\r
@@ -407,7 +407,7 @@ ProcessOptions (
           Character[0] = CHAR_CARRIAGE_RETURN;\r
           NewStrCat (OptionString[0], Character);\r
 \r
-          gBS->FreePool (StringPtr);\r
+          FreePool (StringPtr);\r
         }\r
       }\r
     }\r
@@ -450,8 +450,9 @@ ProcessOptions (
           Link = GetNextNode (&Question->OptionListHead, Link);\r
         }\r
 \r
-        gBS->FreePool (*OptionString);\r
+        FreePool (*OptionString);\r
         *OptionString = NULL;\r
+        return EFI_NOT_FOUND;\r
       }\r
 \r
       if ((OneOfOption->SuppressExpression != NULL) &&\r
@@ -495,7 +496,7 @@ ProcessOptions (
         Character[0] = RIGHT_ONEOF_DELIMITER;\r
         NewStrCat (OptionString[0], Character);\r
 \r
-        gBS->FreePool (StringPtr);\r
+        FreePool (StringPtr);\r
       }\r
     }\r
     break;\r
@@ -521,7 +522,7 @@ ProcessOptions (
         // Inconsistent check fail, restore Question Value\r
         //\r
         QuestionValue->Value.b = (BOOLEAN) (QuestionValue->Value.b ? FALSE : TRUE);\r
-        gBS->FreePool (*OptionString);\r
+        FreePool (*OptionString);\r
         *OptionString = NULL;\r
         return Status;\r
       }\r
@@ -641,7 +642,7 @@ ProcessOptions (
         UpdateStatusBar (NV_UPDATE_REQUIRED, Question->QuestionFlags, TRUE);\r
       }\r
 \r
-      gBS->FreePool (StringPtr);\r
+      FreePool (StringPtr);\r
     } else {\r
       *OptionString = AllocateZeroPool (BufferSize);\r
       ASSERT (*OptionString);\r
@@ -675,7 +676,7 @@ ProcessOptions (
           //\r
           // Callback request to terminate password input\r
           //\r
-          gBS->FreePool (StringPtr);\r
+          FreePool (StringPtr);\r
           return EFI_SUCCESS;\r
         }\r
 \r
@@ -685,7 +686,7 @@ ProcessOptions (
           //\r
           Status = ReadString (MenuOption, gPromptForPassword, StringPtr);\r
           if (EFI_ERROR (Status)) {\r
-            gBS->FreePool (StringPtr);\r
+            FreePool (StringPtr);\r
             return Status;\r
           }\r
 \r
@@ -703,7 +704,7 @@ ProcessOptions (
               Status = EFI_SUCCESS;\r
             }\r
 \r
-            gBS->FreePool (StringPtr);\r
+            FreePool (StringPtr);\r
             return Status;\r
           }\r
         }\r
@@ -717,11 +718,13 @@ ProcessOptions (
           //\r
           Status = ReadString (MenuOption, gPromptForPassword, StringPtr);\r
           if (EFI_ERROR (Status)) {\r
-            gBS->FreePool (StringPtr);\r
+            FreePool (StringPtr);\r
             return Status;\r
           }\r
 \r
           TempString = AllocateCopyPool ((Maximum + 1) * sizeof (CHAR16), Question->BufferValue);\r
+          ASSERT (TempString != NULL);\r
+          \r
           TempString[Maximum] = L'\0';\r
 \r
           if (StrCmp (StringPtr, TempString) != 0) {\r
@@ -730,12 +733,12 @@ ProcessOptions (
             //\r
             PasswordInvalid ();\r
 \r
-            gBS->FreePool (StringPtr);\r
-            gBS->FreePool (TempString);\r
+            FreePool (StringPtr);\r
+            FreePool (TempString);\r
             return Status;\r
           }\r
 \r
-          gBS->FreePool (TempString);\r
+          FreePool (TempString);\r
         }\r
       }\r
 \r
@@ -752,7 +755,7 @@ ProcessOptions (
           PasswordCallback (Selection, MenuOption, NULL);\r
         }\r
 \r
-        gBS->FreePool (StringPtr);\r
+        FreePool (StringPtr);\r
         return Status;\r
       }\r
 \r
@@ -770,8 +773,8 @@ ProcessOptions (
           PasswordCallback (Selection, MenuOption, NULL);\r
         }\r
 \r
-        gBS->FreePool (StringPtr);\r
-        gBS->FreePool (TempString);\r
+        FreePool (StringPtr);\r
+        FreePool (TempString);\r
         return Status;\r
       }\r
 \r
@@ -804,8 +807,8 @@ ProcessOptions (
         } while (Key.UnicodeChar != CHAR_CARRIAGE_RETURN);\r
       }\r
 \r
-      gBS->FreePool (TempString);\r
-      gBS->FreePool (StringPtr);\r
+      FreePool (TempString);\r
+      FreePool (StringPtr);\r
     }\r
     break;\r
 \r
@@ -833,7 +836,7 @@ ProcessHelpString (
   IN  UINTN   RowCount\r
   )\r
 {\r
-  CONST UINTN BlockWidth = (UINTN) gHelpBlockWidth - 1;\r
+  UINTN BlockWidth;\r
   UINTN AllocateSize;\r
   //\r
   // [PrevCurrIndex, CurrIndex) forms a range of a screen-line\r
@@ -866,6 +869,8 @@ ProcessHelpString (
   UINTN *IndexArray;\r
   UINTN *OldIndexArray;\r
 \r
+  BlockWidth = (UINTN) gHelpBlockWidth - 1;\r
+  \r
   //\r
   // every three elements of IndexArray form a screen-line of string:[ IndexArray[i*3], IndexArray[i*3+1] )\r
   // IndexArray[i*3+2] stores the initial glyph width of single character. to save this is because we want\r
@@ -875,9 +880,10 @@ ProcessHelpString (
   //\r
   AllocateSize  = 0x20;\r
   IndexArray    = AllocatePool (AllocateSize * sizeof (UINTN) * 3);\r
+  ASSERT (IndexArray != NULL);\r
 \r
   if (*FormattedString != NULL) {\r
-    gBS->FreePool (*FormattedString);\r
+    FreePool (*FormattedString);\r
     *FormattedString = NULL;\r
   }\r
 \r
@@ -890,8 +896,10 @@ ProcessHelpString (
       AllocateSize += 0x10;\r
       OldIndexArray  = IndexArray;\r
       IndexArray = AllocatePool (AllocateSize * sizeof (UINTN) * 3);\r
+      ASSERT (IndexArray != NULL);\r
+      \r
       CopyMem (IndexArray, OldIndexArray, LineCount * sizeof (UINTN) * 3);\r
-      gBS->FreePool (OldIndexArray);\r
+      FreePool (OldIndexArray);\r
     }\r
     switch (StringPtr[CurrIndex]) {\r
 \r
@@ -1010,6 +1018,7 @@ ProcessHelpString (
 \r
   VirtualLineCount = RowCount * (LineCount / RowCount + (LineCount % RowCount > 0));\r
   *FormattedString = AllocateZeroPool (VirtualLineCount * (BlockWidth + 1) * sizeof (CHAR16) * 2);\r
+  ASSERT (*FormattedString != NULL);\r
 \r
   for (CurrIndex = 0; CurrIndex < LineCount; CurrIndex ++) {\r
     *(*FormattedString + CurrIndex * 2 * (BlockWidth + 1)) = (CHAR16) ((IndexArray[CurrIndex*3+2] == 2) ? WIDE_CHAR : NARROW_CHAR);\r
@@ -1020,5 +1029,5 @@ ProcessHelpString (
       );\r
   }\r
 \r
-  gBS->FreePool (IndexArray);\r
+  FreePool (IndexArray);\r
 }\r