]> xenbits.xensource.com Git - ovmf.git/commitdiff
MdeModulePkg: Fix conditionally uninitialized variables
authorMichael Kubacki <michael.kubacki@microsoft.com>
Tue, 8 Nov 2022 20:24:54 +0000 (15:24 -0500)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Mon, 3 Apr 2023 15:29:08 +0000 (15:29 +0000)
Fixes CodeQL alerts for CWE-457:
https://cwe.mitre.org/data/definitions/457.html

Cc: Dandan Bi <dandan.bi@intel.com>
Cc: Eric Dong <eric.dong@intel.com>
Cc: Erich McMillan <emcmillan@microsoft.com>
Cc: Guomin Jiang <guomin.jiang@intel.com>
Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Michael Kubacki <mikuback@linux.microsoft.com>
Cc: Ray Ni <ray.ni@intel.com>
Cc: Zhichao Gao <zhichao.gao@intel.com>
Co-authored-by: Erich McMillan <emcmillan@microsoft.com>
Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
Reviewed-by: Oliver Smith-Denny <osd@smith-denny.com>
MdeModulePkg/Bus/Pci/PciBusDxe/PciIo.c
MdeModulePkg/Bus/Pci/UhciDxe/Uhci.c
MdeModulePkg/Core/Dxe/Mem/Page.c
MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootOption.c
MdeModulePkg/Library/FileExplorerLib/FileExplorer.c
MdeModulePkg/Universal/BdsDxe/BdsEntry.c
MdeModulePkg/Universal/DisplayEngineDxe/ProcessOptions.c
MdeModulePkg/Universal/HiiDatabaseDxe/Font.c
MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c

index 843815d0cb18c088d24426f768ad6752ac0ecb89..14bed547295858d60bdb9c08b3b4998e94198c72 100644 (file)
@@ -1407,6 +1407,7 @@ SupportPaletteSnoopAttributes (
   IN EFI_PCI_IO_PROTOCOL_ATTRIBUTE_OPERATION  Operation\r
   )\r
 {\r
+  EFI_STATUS     Status;\r
   PCI_IO_DEVICE  *Temp;\r
   UINT16         VGACommand;\r
 \r
@@ -1444,13 +1445,13 @@ SupportPaletteSnoopAttributes (
   // Check if they are on the same bus\r
   //\r
   if (Temp->Parent == PciIoDevice->Parent) {\r
-    PCI_READ_COMMAND_REGISTER (Temp, &VGACommand);\r
+    Status = PCI_READ_COMMAND_REGISTER (Temp, &VGACommand);\r
 \r
     //\r
     // If they are on the same bus, either one can\r
     // be set to snoop, the other set to decode\r
     //\r
-    if ((VGACommand & EFI_PCI_COMMAND_VGA_PALETTE_SNOOP) != 0) {\r
+    if (!EFI_ERROR (Status) && ((VGACommand & EFI_PCI_COMMAND_VGA_PALETTE_SNOOP) != 0)) {\r
       //\r
       // VGA has set to snoop, so GFX can be only set to disable snoop\r
       //\r
index 48741085e5078dc40f9d68354f10bf01c6003be8..496ffbd5c4cc7841ac304ba7d1d5eb5ed9d16151 100644 (file)
@@ -730,10 +730,12 @@ Uhci2ControlTransfer (
 \r
   Uhc->PciIo->Flush (Uhc->PciIo);\r
 \r
-  *TransferResult = QhResult.Result;\r
+  if (!EFI_ERROR (Status)) {\r
+    *TransferResult = QhResult.Result;\r
 \r
-  if (DataLength != NULL) {\r
-    *DataLength = QhResult.Complete;\r
+    if (DataLength != NULL) {\r
+      *DataLength = QhResult.Complete;\r
+    }\r
   }\r
 \r
   UhciDestoryTds (Uhc, TDs);\r
@@ -884,9 +886,11 @@ Uhci2BulkTransfer (
 \r
   Uhc->PciIo->Flush (Uhc->PciIo);\r
 \r
-  *TransferResult = QhResult.Result;\r
-  *DataToggle     = QhResult.NextToggle;\r
-  *DataLength     = QhResult.Complete;\r
+  if (!EFI_ERROR (Status)) {\r
+    *TransferResult = QhResult.Result;\r
+    *DataToggle     = QhResult.NextToggle;\r
+    *DataLength     = QhResult.Complete;\r
+  }\r
 \r
   UhciDestoryTds (Uhc, TDs);\r
   Uhc->PciIo->Unmap (Uhc->PciIo, DataMap);\r
@@ -1210,9 +1214,11 @@ Uhci2SyncInterruptTransfer (
   UhciUnlinkTdFromQh (Uhc->SyncIntQh, TDs);\r
   Uhc->PciIo->Flush (Uhc->PciIo);\r
 \r
-  *TransferResult = QhResult.Result;\r
-  *DataToggle     = QhResult.NextToggle;\r
-  *DataLength     = QhResult.Complete;\r
+  if (!EFI_ERROR (Status)) {\r
+    *TransferResult = QhResult.Result;\r
+    *DataToggle     = QhResult.NextToggle;\r
+    *DataLength     = QhResult.Complete;\r
+  }\r
 \r
   UhciDestoryTds (Uhc, TDs);\r
   Uhc->PciIo->Unmap (Uhc->PciIo, DataMap);\r
index 5903ce7ab525e04716b6d5ef59ddbe4bec5901b2..41af50b3d5abbd11e68111124ac60b124dc06dc0 100644 (file)
@@ -449,14 +449,15 @@ PromoteMemoryResource (
     //\r
     Promoted = PromoteGuardedFreePages (&StartAddress, &EndAddress);\r
     if (Promoted) {\r
-      CoreGetMemorySpaceDescriptor (StartAddress, &Descriptor);\r
-      CoreAddRange (\r
-        EfiConventionalMemory,\r
-        StartAddress,\r
-        EndAddress,\r
-        Descriptor.Capabilities & ~(EFI_MEMORY_PRESENT | EFI_MEMORY_INITIALIZED |\r
-                                    EFI_MEMORY_TESTED | EFI_MEMORY_RUNTIME)\r
-        );\r
+      if (!EFI_ERROR (CoreGetMemorySpaceDescriptor (StartAddress, &Descriptor))) {\r
+        CoreAddRange (\r
+          EfiConventionalMemory,\r
+          StartAddress,\r
+          EndAddress,\r
+          Descriptor.Capabilities & ~(EFI_MEMORY_PRESENT | EFI_MEMORY_INITIALIZED |\r
+                                      EFI_MEMORY_TESTED | EFI_MEMORY_RUNTIME)\r
+          );\r
+      }\r
     }\r
   }\r
 \r
index cdaa2db15365841c32dbc5d0988e5bb3a41e8769..e22aaf3039f13d5a4d222ee06e61c75f3d6554bd 100644 (file)
@@ -909,23 +909,28 @@ BootFromFile (
   IN EFI_DEVICE_PATH_PROTOCOL  *FilePath\r
   )\r
 {\r
+  EFI_STATUS                    Status;\r
   EFI_BOOT_MANAGER_LOAD_OPTION  BootOption;\r
   CHAR16                        *FileName;\r
 \r
+  Status   = EFI_NOT_STARTED;\r
   FileName = NULL;\r
 \r
   FileName = ExtractFileNameFromDevicePath (FilePath);\r
   if (FileName != NULL) {\r
-    EfiBootManagerInitializeLoadOption (\r
-      &BootOption,\r
-      0,\r
-      LoadOptionTypeBoot,\r
-      LOAD_OPTION_ACTIVE,\r
-      FileName,\r
-      FilePath,\r
-      NULL,\r
-      0\r
-      );\r
+    Status = EfiBootManagerInitializeLoadOption (\r
+               &BootOption,\r
+               0,\r
+               LoadOptionTypeBoot,\r
+               LOAD_OPTION_ACTIVE,\r
+               FileName,\r
+               FilePath,\r
+               NULL,\r
+               0\r
+               );\r
+  }\r
+\r
+  if (!EFI_ERROR (Status)) {\r
     //\r
     // Since current no boot from removable media directly is allowed */\r
     //\r
index ef949267fcc25df543743ca796d745ed21212ede..804a03d868f2068bef141b86af95cf48a3b5243d 100644 (file)
@@ -1075,7 +1075,10 @@ LibCreateNewFile (
   NewHandle    = NULL;\r
   FullFileName = NULL;\r
 \r
-  LibGetFileHandleFromDevicePath (gFileExplorerPrivate.RetDevicePath, &FileHandle, &ParentName, &DeviceHandle);\r
+  if (EFI_ERROR (LibGetFileHandleFromDevicePath (gFileExplorerPrivate.RetDevicePath, &FileHandle, &ParentName, &DeviceHandle))) {\r
+    return EFI_DEVICE_ERROR;\r
+  }\r
+\r
   FullFileName = LibAppendFileName (ParentName, FileName);\r
   if (FullFileName == NULL) {\r
     return EFI_OUT_OF_RESOURCES;\r
index 766dde3aaeeb564dba1a1b8f3fdde6098d28699e..72de8d3211b70238a441addbf328e028c39ea4f9 100644 (file)
@@ -691,6 +691,7 @@ BdsEntry (
   EFI_DEVICE_PATH_PROTOCOL        *FilePath;\r
   EFI_STATUS                      BootManagerMenuStatus;\r
   EFI_BOOT_MANAGER_LOAD_OPTION    PlatformDefaultBootOption;\r
+  BOOLEAN                         PlatformDefaultBootOptionValid;\r
 \r
   HotkeyTriggered = NULL;\r
   Status          = EFI_SUCCESS;\r
@@ -809,24 +810,24 @@ BdsEntry (
     CpuDeadLoop ();\r
   }\r
 \r
-  Status = EfiBootManagerInitializeLoadOption (\r
-             &PlatformDefaultBootOption,\r
-             LoadOptionNumberUnassigned,\r
-             LoadOptionTypePlatformRecovery,\r
-             LOAD_OPTION_ACTIVE,\r
-             L"Default PlatformRecovery",\r
-             FilePath,\r
-             NULL,\r
-             0\r
-             );\r
-  ASSERT_EFI_ERROR (Status);\r
+  PlatformDefaultBootOptionValid = EfiBootManagerInitializeLoadOption (\r
+                                     &PlatformDefaultBootOption,\r
+                                     LoadOptionNumberUnassigned,\r
+                                     LoadOptionTypePlatformRecovery,\r
+                                     LOAD_OPTION_ACTIVE,\r
+                                     L"Default PlatformRecovery",\r
+                                     FilePath,\r
+                                     NULL,\r
+                                     0\r
+                                     ) == EFI_SUCCESS;\r
+  ASSERT (PlatformDefaultBootOptionValid == TRUE);\r
 \r
   //\r
   // System firmware must include a PlatformRecovery#### variable specifying\r
   // a short-form File Path Media Device Path containing the platform default\r
   // file path for removable media if the platform supports Platform Recovery.\r
   //\r
-  if (PcdGetBool (PcdPlatformRecoverySupport)) {\r
+  if (PlatformDefaultBootOptionValid && PcdGetBool (PcdPlatformRecoverySupport)) {\r
     LoadOptions = EfiBootManagerGetLoadOptions (&LoadOptionCount, LoadOptionTypePlatformRecovery);\r
     if (EfiBootManagerFindLoadOption (&PlatformDefaultBootOption, LoadOptions, LoadOptionCount) == -1) {\r
       for (Index = 0; Index < LoadOptionCount; Index++) {\r
@@ -1104,15 +1105,17 @@ BdsEntry (
       LoadOptions = EfiBootManagerGetLoadOptions (&LoadOptionCount, LoadOptionTypePlatformRecovery);\r
       ProcessLoadOptions (LoadOptions, LoadOptionCount);\r
       EfiBootManagerFreeLoadOptions (LoadOptions, LoadOptionCount);\r
-    } else {\r
+    } else if (PlatformDefaultBootOptionValid) {\r
       //\r
       // When platform recovery is not enabled, still boot to platform default file path.\r
       //\r
-      EfiBootManagerProcessLoadOption (&PlatformDefaultBootOption);\r
+      PlatformDefaultBootOptionValid = EfiBootManagerProcessLoadOption (&PlatformDefaultBootOption) == EFI_SUCCESS;\r
     }\r
   }\r
 \r
-  EfiBootManagerFreeLoadOption (&PlatformDefaultBootOption);\r
+  if (PlatformDefaultBootOptionValid) {\r
+    EfiBootManagerFreeLoadOption (&PlatformDefaultBootOption);\r
+  }\r
 \r
   DEBUG ((DEBUG_ERROR, "[Bds] Unable to boot!\n"));\r
   PlatformBootManagerUnableToBoot ();\r
index dca3c1df07ba42e12395206220a6a3f169955916..0d4cfa4cf06f58a21cfd7d9d2a66b61e8a0cf4cf 100644 (file)
@@ -944,13 +944,14 @@ PrintMismatchMenuInfo (
   UINTN                          FormsetBufferSize;\r
 \r
   Question = MenuOption->ThisTag;\r
-  HiiGetFormSetFromHiiHandle (gFormData->HiiHandle, &FormsetBuffer, &FormsetBufferSize);\r
 \r
-  FormSetTitleStr = GetToken (FormsetBuffer->FormSetTitle, gFormData->HiiHandle);\r
-  FormTitleStr    = GetToken (gFormData->FormTitle, gFormData->HiiHandle);\r
+  if (!EFI_ERROR (HiiGetFormSetFromHiiHandle (gFormData->HiiHandle, &FormsetBuffer, &FormsetBufferSize))) {\r
+    FormSetTitleStr = GetToken (FormsetBuffer->FormSetTitle, gFormData->HiiHandle);\r
+    FormTitleStr    = GetToken (gFormData->FormTitle, gFormData->HiiHandle);\r
 \r
-  DEBUG ((DEBUG_ERROR, "\n[%a]: Mismatch Formset    : Formset Guid = %g,  FormSet title = %s\n", gEfiCallerBaseName, &gFormData->FormSetGuid, FormSetTitleStr));\r
-  DEBUG ((DEBUG_ERROR, "[%a]: Mismatch Form       : FormId = %d,  Form title = %s.\n", gEfiCallerBaseName, gFormData->FormId, FormTitleStr));\r
+    DEBUG ((DEBUG_ERROR, "\n[%a]: Mismatch Formset    : Formset Guid = %g,  FormSet title = %s\n", gEfiCallerBaseName, &gFormData->FormSetGuid, FormSetTitleStr));\r
+    DEBUG ((DEBUG_ERROR, "[%a]: Mismatch Form       : FormId = %d,  Form title = %s.\n", gEfiCallerBaseName, gFormData->FormId, FormTitleStr));\r
+  }\r
 \r
   if (Question->OpCode->OpCode == EFI_IFR_ORDERED_LIST_OP) {\r
     QuestionName = GetToken (((EFI_IFR_ORDERED_LIST *)MenuOption->ThisTag->OpCode)->Question.Header.Prompt, gFormData->HiiHandle);\r
index 399f90feb783bb578921941faeee3441c4de87d3..8a0b12f72fbe516ef88fa027c82fa05a3175b396 100644 (file)
@@ -1745,6 +1745,7 @@ HiiStringToImage (
   Attributes = (UINT8 *)AllocateZeroPool (StrLength * sizeof (UINT8));\r
   ASSERT (Attributes != NULL);\r
 \r
+  FontInfo      = NULL;\r
   RowInfo       = NULL;\r
   Status        = EFI_SUCCESS;\r
   StringIn2     = NULL;\r
@@ -1787,11 +1788,14 @@ HiiStringToImage (
       Background  = ((EFI_FONT_DISPLAY_INFO *)StringInfo)->BackgroundColor;\r
     } else if (Status == EFI_SUCCESS) {\r
       FontInfo = &StringInfoOut->FontInfo;\r
-      IsFontInfoExisted (Private, FontInfo, NULL, NULL, &GlobalFont);\r
-      Height     = GlobalFont->FontPackage->Height;\r
-      BaseLine   = GlobalFont->FontPackage->BaseLine;\r
-      Foreground = StringInfoOut->ForegroundColor;\r
-      Background = StringInfoOut->BackgroundColor;\r
+      if (IsFontInfoExisted (Private, FontInfo, NULL, NULL, &GlobalFont)) {\r
+        Height     = GlobalFont->FontPackage->Height;\r
+        BaseLine   = GlobalFont->FontPackage->BaseLine;\r
+        Foreground = StringInfoOut->ForegroundColor;\r
+        Background = StringInfoOut->BackgroundColor;\r
+      } else {\r
+        goto Exit;\r
+      }\r
     } else {\r
       goto Exit;\r
     }\r
index 14c176887a559815494c4590fc687272926334b5..3eb7d935b4d2186a0533aba9ea66cb82c4e08445 100644 (file)
@@ -2453,7 +2453,7 @@ VariableServiceGetVariable (
   AcquireLockOnlyAtBootTime (&mVariableModuleGlobal->VariableGlobal.VariableServicesLock);\r
 \r
   Status = FindVariable (VariableName, VendorGuid, &Variable, &mVariableModuleGlobal->VariableGlobal, FALSE);\r
-  if ((Variable.CurrPtr == NULL) || EFI_ERROR (Status)) {\r
+  if (EFI_ERROR (Status) || (Variable.CurrPtr == NULL)) {\r
     goto Done;\r
   }\r
 \r