]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/HiiDatabaseDxe/Database.c
MdeModulePkg HiiDataBase: Fix the potential NULL pointer reference
[mirror_edk2.git] / MdeModulePkg / Universal / HiiDatabaseDxe / Database.c
index ffcd9ec7ae747e3dea00664eb854c15359efe0cc..4a2dc8d0304399810344f05b5d246a57f5f3d66b 100644 (file)
@@ -739,6 +739,8 @@ FindQuestionDefaultSetting (
   if (VariableHeader == NULL) {\r
     return EFI_NOT_FOUND;\r
   }\r
+  StartBit   = 0;\r
+  EndBit     = 0;\r
   ByteOffset = IfrQuestionHdr->VarStoreInfo.VarOffset;\r
   if (BitFieldQuestion) {\r
     BitOffset  = IfrQuestionHdr->VarStoreInfo.VarOffset;\r
@@ -818,6 +820,7 @@ UpdateDefaultSettingInFormPackage (
 \r
   ZeroMem (&VarStoreQuestionHeader, sizeof (VarStoreQuestionHeader));\r
   PackageLength = FormPackage->FormPkgHdr.Length - sizeof (EFI_HII_PACKAGE_HEADER);\r
+  Width         = 0;\r
   IfrOffset     = 0;\r
   IfrScope      = 0;\r
   IfrOpHdr      = (EFI_IFR_OP_HEADER *) FormPackage->IfrData;\r
@@ -841,6 +844,9 @@ UpdateDefaultSettingInFormPackage (
         // Reallocate EFI VarStore Buffer\r
         //\r
         EfiVarStoreList   = ReallocatePool (EfiVarStoreMaxNum * sizeof (UINTN), (EfiVarStoreMaxNum + BASE_NUMBER) * sizeof (UINTN), EfiVarStoreList);\r
+        if (EfiVarStoreList == NULL) {\r
+          goto Done;\r
+        }\r
         EfiVarStoreMaxNum = EfiVarStoreMaxNum + BASE_NUMBER;\r
       }\r
       IfrEfiVarStore = (EFI_IFR_VARSTORE_EFI *) IfrOpHdr;\r
@@ -848,6 +854,9 @@ UpdateDefaultSettingInFormPackage (
       // Convert VarStore Name from ASCII string to Unicode string.\r
       //\r
       EfiVarStoreList [EfiVarStoreNumber] = AllocatePool (IfrEfiVarStore->Header.Length + AsciiStrSize ((CHAR8 *)IfrEfiVarStore->Name));\r
+      if (EfiVarStoreList [EfiVarStoreNumber] == NULL) {\r
+        break;\r
+      }\r
       CopyMem (EfiVarStoreList [EfiVarStoreNumber], IfrEfiVarStore, IfrEfiVarStore->Header.Length);\r
       AsciiStrToUnicodeStrS ((CHAR8 *)IfrEfiVarStore->Name, (CHAR16 *) &(EfiVarStoreList [EfiVarStoreNumber]->Name[0]), AsciiStrSize ((CHAR8 *)IfrEfiVarStore->Name) * sizeof (CHAR16));\r
       Status = FindQuestionDefaultSetting (EFI_HII_DEFAULT_CLASS_STANDARD, EfiVarStoreList[EfiVarStoreNumber], &VarStoreQuestionHeader, NULL, IfrEfiVarStore->Size, FALSE);\r
@@ -864,6 +873,9 @@ UpdateDefaultSettingInFormPackage (
         // Reallocate DefaultIdNumber\r
         //\r
         DefaultIdList   = ReallocatePool (DefaultIdMaxNum * sizeof (UINT16), (DefaultIdMaxNum + BASE_NUMBER) * sizeof (UINT16), DefaultIdList);\r
+        if (DefaultIdList == NULL) {\r
+          goto Done;\r
+        }\r
         DefaultIdMaxNum = DefaultIdMaxNum + BASE_NUMBER;\r
       }\r
       DefaultIdList[DefaultIdNumber ++] = ((EFI_IFR_DEFAULTSTORE *) IfrOpHdr)->DefaultId;\r
@@ -1034,8 +1046,10 @@ UpdateDefaultSettingInFormPackage (
   }\r
 \r
 Done:\r
-  for (Index = 0; Index < EfiVarStoreNumber; Index ++) {\r
-    FreePool (EfiVarStoreList [Index]);\r
+  if (EfiVarStoreList != NULL) {\r
+    for (Index = 0; Index < EfiVarStoreNumber; Index ++) {\r
+      FreePool (EfiVarStoreList [Index]);\r
+    }\r
   }\r
   return;\r
 }\r