From nobody Mon Sep 16 19:42:30 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+101025+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+101025+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=linux.microsoft.com ARC-Seal: i=1; a=rsa-sha256; t=1678473923; cv=none; d=zohomail.com; s=zohoarc; b=KBUkLUSmFdFIroW7UwQDjR4gnwq7pSrB8W2u5dzM0jTQhT3JgDd903jLGq4YYVbQsRSNGgMbk2FHTVckjbYtsaFnyOAcQjwhdEsYbO+PnlD/AElhY2H9xA0fx2xH4tBVUQV+3qZfXoatMBeA6QOXRGnhwGGr7x5LSoyiR5gEVhs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1678473923; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=qrpEQgZWwmUIGTzvDOZs9ObStvNW8aRP8aJVJWO27ug=; b=ndXUdTzYtY6O2OeioAyKFnlMfabfiynA2RbJeooz6rSnEsK0KsrrZ8f+e+xgsDaQmbqmJQqP34M4qhp89NYVnI+XO+Ettn/4euGvnMYSPOAE7ddOMBE33JrZkT2284yg1SgygditV1sNdz8eeNkMi8gFYfcTi/cSVTgv/QsLDRE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+101025+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1678473923976733.9155741170684; Fri, 10 Mar 2023 10:45:23 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id eNs9YY1788612xN8krsfOfYB; Fri, 10 Mar 2023 10:45:23 -0800 X-Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mx.groups.io with SMTP id smtpd.web10.27812.1678473923047630393 for ; Fri, 10 Mar 2023 10:45:23 -0800 X-Received: from localhost.localdomain (unknown [47.201.8.94]) by linux.microsoft.com (Postfix) with ESMTPSA id 9262A20C14D5; Fri, 10 Mar 2023 10:45:21 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 9262A20C14D5 From: "Michael Kubacki" To: devel@edk2.groups.io Cc: Dandan Bi , Eric Dong , Erich McMillan , Guomin Jiang , Jian J Wang , Liming Gao , Michael Kubacki , Ray Ni , Zhichao Gao Subject: [edk2-devel] [PATCH v4 05/12] MdeModulePkg: Fix conditionally uninitialized variables Date: Fri, 10 Mar 2023 13:42:31 -0500 Message-Id: <20230310184238.2999-6-mikuback@linux.microsoft.com> In-Reply-To: <20230310184238.2999-1-mikuback@linux.microsoft.com> References: <20230310184238.2999-1-mikuback@linux.microsoft.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,mikuback@linux.microsoft.com X-Gm-Message-State: RaPYExyXJH7IKZ1CIjxFOMOJx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1678473923; bh=iedItocvzRRUp1eRirj8ngBaJb3q0DMN6K+LKwCVOKc=; h=Cc:Date:From:Reply-To:Subject:To; b=oged/IIWAsvqFCBCB4AiqQEvbXrmjjsRqLaaM/XeJvGNAukN8WUtBFGwAJSAYw1qxkT giBA4SVU1D1yMDn+6oFZf1BEF463aDTQxkt20fqo9jR7w33HKLQ0xifldClZ4IsXXqjHJ Lm5LZlkqFg0KEBAmOcYHzKRJ/eF/IM+l6aU= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1678473926169100003 Content-Type: text/plain; charset="utf-8" From: Michael Kubacki Fixes CodeQL alerts for CWE-457: https://cwe.mitre.org/data/definitions/457.html Cc: Dandan Bi Cc: Eric Dong Cc: Erich McMillan Cc: Guomin Jiang Cc: Jian J Wang Cc: Liming Gao Cc: Michael Kubacki Cc: Ray Ni Cc: Zhichao Gao Co-authored-by: Erich McMillan Signed-off-by: Michael Kubacki Reviewed-by: Liming Gao --- MdeModulePkg/Bus/Pci/PciBusDxe/PciIo.c | 5 +-- MdeModulePkg/Bus/Pci/UhciDxe/Uhci.c | 24 +++++++= +------ MdeModulePkg/Core/Dxe/Mem/Page.c | 17 +++++--= --- MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootOption.c | 25 +++++++= ++------ MdeModulePkg/Library/FileExplorerLib/FileExplorer.c | 5 ++- MdeModulePkg/Universal/BdsDxe/BdsEntry.c | 33 +++++++= ++++--------- MdeModulePkg/Universal/DisplayEngineDxe/ProcessOptions.c | 11 ++++--- MdeModulePkg/Universal/HiiDatabaseDxe/Font.c | 14 ++++++-= -- MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c | 2 +- 9 files changed, 80 insertions(+), 56 deletions(-) diff --git a/MdeModulePkg/Bus/Pci/PciBusDxe/PciIo.c b/MdeModulePkg/Bus/Pci/= PciBusDxe/PciIo.c index 843815d0cb18..14bed5472958 100644 --- a/MdeModulePkg/Bus/Pci/PciBusDxe/PciIo.c +++ b/MdeModulePkg/Bus/Pci/PciBusDxe/PciIo.c @@ -1407,6 +1407,7 @@ SupportPaletteSnoopAttributes ( IN EFI_PCI_IO_PROTOCOL_ATTRIBUTE_OPERATION Operation ) { + EFI_STATUS Status; PCI_IO_DEVICE *Temp; UINT16 VGACommand; =20 @@ -1444,13 +1445,13 @@ SupportPaletteSnoopAttributes ( // Check if they are on the same bus // if (Temp->Parent =3D=3D PciIoDevice->Parent) { - PCI_READ_COMMAND_REGISTER (Temp, &VGACommand); + Status =3D PCI_READ_COMMAND_REGISTER (Temp, &VGACommand); =20 // // If they are on the same bus, either one can // be set to snoop, the other set to decode // - if ((VGACommand & EFI_PCI_COMMAND_VGA_PALETTE_SNOOP) !=3D 0) { + if (!EFI_ERROR (Status) && ((VGACommand & EFI_PCI_COMMAND_VGA_PALETTE_= SNOOP) !=3D 0)) { // // VGA has set to snoop, so GFX can be only set to disable snoop // diff --git a/MdeModulePkg/Bus/Pci/UhciDxe/Uhci.c b/MdeModulePkg/Bus/Pci/Uhc= iDxe/Uhci.c index 48741085e507..496ffbd5c4cc 100644 --- a/MdeModulePkg/Bus/Pci/UhciDxe/Uhci.c +++ b/MdeModulePkg/Bus/Pci/UhciDxe/Uhci.c @@ -730,10 +730,12 @@ Uhci2ControlTransfer ( =20 Uhc->PciIo->Flush (Uhc->PciIo); =20 - *TransferResult =3D QhResult.Result; + if (!EFI_ERROR (Status)) { + *TransferResult =3D QhResult.Result; =20 - if (DataLength !=3D NULL) { - *DataLength =3D QhResult.Complete; + if (DataLength !=3D NULL) { + *DataLength =3D QhResult.Complete; + } } =20 UhciDestoryTds (Uhc, TDs); @@ -884,9 +886,11 @@ Uhci2BulkTransfer ( =20 Uhc->PciIo->Flush (Uhc->PciIo); =20 - *TransferResult =3D QhResult.Result; - *DataToggle =3D QhResult.NextToggle; - *DataLength =3D QhResult.Complete; + if (!EFI_ERROR (Status)) { + *TransferResult =3D QhResult.Result; + *DataToggle =3D QhResult.NextToggle; + *DataLength =3D QhResult.Complete; + } =20 UhciDestoryTds (Uhc, TDs); Uhc->PciIo->Unmap (Uhc->PciIo, DataMap); @@ -1210,9 +1214,11 @@ Uhci2SyncInterruptTransfer ( UhciUnlinkTdFromQh (Uhc->SyncIntQh, TDs); Uhc->PciIo->Flush (Uhc->PciIo); =20 - *TransferResult =3D QhResult.Result; - *DataToggle =3D QhResult.NextToggle; - *DataLength =3D QhResult.Complete; + if (!EFI_ERROR (Status)) { + *TransferResult =3D QhResult.Result; + *DataToggle =3D QhResult.NextToggle; + *DataLength =3D QhResult.Complete; + } =20 UhciDestoryTds (Uhc, TDs); Uhc->PciIo->Unmap (Uhc->PciIo, DataMap); diff --git a/MdeModulePkg/Core/Dxe/Mem/Page.c b/MdeModulePkg/Core/Dxe/Mem/P= age.c index 5903ce7ab525..41af50b3d5ab 100644 --- a/MdeModulePkg/Core/Dxe/Mem/Page.c +++ b/MdeModulePkg/Core/Dxe/Mem/Page.c @@ -449,14 +449,15 @@ PromoteMemoryResource ( // Promoted =3D PromoteGuardedFreePages (&StartAddress, &EndAddress); if (Promoted) { - CoreGetMemorySpaceDescriptor (StartAddress, &Descriptor); - CoreAddRange ( - EfiConventionalMemory, - StartAddress, - EndAddress, - Descriptor.Capabilities & ~(EFI_MEMORY_PRESENT | EFI_MEMORY_INITIA= LIZED | - EFI_MEMORY_TESTED | EFI_MEMORY_RUNTIME) - ); + if (!EFI_ERROR (CoreGetMemorySpaceDescriptor (StartAddress, &Descrip= tor))) { + CoreAddRange ( + EfiConventionalMemory, + StartAddress, + EndAddress, + Descriptor.Capabilities & ~(EFI_MEMORY_PRESENT | EFI_MEMORY_INIT= IALIZED | + EFI_MEMORY_TESTED | EFI_MEMORY_RUNTI= ME) + ); + } } } =20 diff --git a/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootOption.c = b/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootOption.c index cdaa2db15365..e22aaf3039f1 100644 --- a/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootOption.c +++ b/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootOption.c @@ -909,23 +909,28 @@ BootFromFile ( IN EFI_DEVICE_PATH_PROTOCOL *FilePath ) { + EFI_STATUS Status; EFI_BOOT_MANAGER_LOAD_OPTION BootOption; CHAR16 *FileName; =20 + Status =3D EFI_NOT_STARTED; FileName =3D NULL; =20 FileName =3D ExtractFileNameFromDevicePath (FilePath); if (FileName !=3D NULL) { - EfiBootManagerInitializeLoadOption ( - &BootOption, - 0, - LoadOptionTypeBoot, - LOAD_OPTION_ACTIVE, - FileName, - FilePath, - NULL, - 0 - ); + Status =3D EfiBootManagerInitializeLoadOption ( + &BootOption, + 0, + LoadOptionTypeBoot, + LOAD_OPTION_ACTIVE, + FileName, + FilePath, + NULL, + 0 + ); + } + + if (!EFI_ERROR (Status)) { // // Since current no boot from removable media directly is allowed */ // diff --git a/MdeModulePkg/Library/FileExplorerLib/FileExplorer.c b/MdeModul= ePkg/Library/FileExplorerLib/FileExplorer.c index ef949267fcc2..804a03d868f2 100644 --- a/MdeModulePkg/Library/FileExplorerLib/FileExplorer.c +++ b/MdeModulePkg/Library/FileExplorerLib/FileExplorer.c @@ -1075,7 +1075,10 @@ LibCreateNewFile ( NewHandle =3D NULL; FullFileName =3D NULL; =20 - LibGetFileHandleFromDevicePath (gFileExplorerPrivate.RetDevicePath, &Fil= eHandle, &ParentName, &DeviceHandle); + if (EFI_ERROR (LibGetFileHandleFromDevicePath (gFileExplorerPrivate.RetD= evicePath, &FileHandle, &ParentName, &DeviceHandle))) { + return EFI_DEVICE_ERROR; + } + FullFileName =3D LibAppendFileName (ParentName, FileName); if (FullFileName =3D=3D NULL) { return EFI_OUT_OF_RESOURCES; diff --git a/MdeModulePkg/Universal/BdsDxe/BdsEntry.c b/MdeModulePkg/Univer= sal/BdsDxe/BdsEntry.c index 766dde3aaeeb..72de8d3211b7 100644 --- a/MdeModulePkg/Universal/BdsDxe/BdsEntry.c +++ b/MdeModulePkg/Universal/BdsDxe/BdsEntry.c @@ -691,6 +691,7 @@ BdsEntry ( EFI_DEVICE_PATH_PROTOCOL *FilePath; EFI_STATUS BootManagerMenuStatus; EFI_BOOT_MANAGER_LOAD_OPTION PlatformDefaultBootOption; + BOOLEAN PlatformDefaultBootOptionValid; =20 HotkeyTriggered =3D NULL; Status =3D EFI_SUCCESS; @@ -809,24 +810,24 @@ BdsEntry ( CpuDeadLoop (); } =20 - Status =3D EfiBootManagerInitializeLoadOption ( - &PlatformDefaultBootOption, - LoadOptionNumberUnassigned, - LoadOptionTypePlatformRecovery, - LOAD_OPTION_ACTIVE, - L"Default PlatformRecovery", - FilePath, - NULL, - 0 - ); - ASSERT_EFI_ERROR (Status); + PlatformDefaultBootOptionValid =3D EfiBootManagerInitializeLoadOption ( + &PlatformDefaultBootOption, + LoadOptionNumberUnassigned, + LoadOptionTypePlatformRecovery, + LOAD_OPTION_ACTIVE, + L"Default PlatformRecovery", + FilePath, + NULL, + 0 + ) =3D=3D EFI_SUCCESS; + ASSERT (PlatformDefaultBootOptionValid =3D=3D TRUE); =20 // // System firmware must include a PlatformRecovery#### variable specifyi= ng // a short-form File Path Media Device Path containing the platform defa= ult // file path for removable media if the platform supports Platform Recov= ery. // - if (PcdGetBool (PcdPlatformRecoverySupport)) { + if (PlatformDefaultBootOptionValid && PcdGetBool (PcdPlatformRecoverySup= port)) { LoadOptions =3D EfiBootManagerGetLoadOptions (&LoadOptionCount, LoadOp= tionTypePlatformRecovery); if (EfiBootManagerFindLoadOption (&PlatformDefaultBootOption, LoadOpti= ons, LoadOptionCount) =3D=3D -1) { for (Index =3D 0; Index < LoadOptionCount; Index++) { @@ -1104,15 +1105,17 @@ BdsEntry ( LoadOptions =3D EfiBootManagerGetLoadOptions (&LoadOptionCount, Load= OptionTypePlatformRecovery); ProcessLoadOptions (LoadOptions, LoadOptionCount); EfiBootManagerFreeLoadOptions (LoadOptions, LoadOptionCount); - } else { + } else if (PlatformDefaultBootOptionValid) { // // When platform recovery is not enabled, still boot to platform def= ault file path. // - EfiBootManagerProcessLoadOption (&PlatformDefaultBootOption); + PlatformDefaultBootOptionValid =3D EfiBootManagerProcessLoadOption (= &PlatformDefaultBootOption) =3D=3D EFI_SUCCESS; } } =20 - EfiBootManagerFreeLoadOption (&PlatformDefaultBootOption); + if (PlatformDefaultBootOptionValid) { + EfiBootManagerFreeLoadOption (&PlatformDefaultBootOption); + } =20 DEBUG ((DEBUG_ERROR, "[Bds] Unable to boot!\n")); PlatformBootManagerUnableToBoot (); diff --git a/MdeModulePkg/Universal/DisplayEngineDxe/ProcessOptions.c b/Mde= ModulePkg/Universal/DisplayEngineDxe/ProcessOptions.c index dca3c1df07ba..0d4cfa4cf06f 100644 --- a/MdeModulePkg/Universal/DisplayEngineDxe/ProcessOptions.c +++ b/MdeModulePkg/Universal/DisplayEngineDxe/ProcessOptions.c @@ -944,13 +944,14 @@ PrintMismatchMenuInfo ( UINTN FormsetBufferSize; =20 Question =3D MenuOption->ThisTag; - HiiGetFormSetFromHiiHandle (gFormData->HiiHandle, &FormsetBuffer, &Forms= etBufferSize); =20 - FormSetTitleStr =3D GetToken (FormsetBuffer->FormSetTitle, gFormData->Hi= iHandle); - FormTitleStr =3D GetToken (gFormData->FormTitle, gFormData->HiiHandle= ); + if (!EFI_ERROR (HiiGetFormSetFromHiiHandle (gFormData->HiiHandle, &Forms= etBuffer, &FormsetBufferSize))) { + FormSetTitleStr =3D GetToken (FormsetBuffer->FormSetTitle, gFormData->= HiiHandle); + FormTitleStr =3D GetToken (gFormData->FormTitle, gFormData->HiiHand= le); =20 - DEBUG ((DEBUG_ERROR, "\n[%a]: Mismatch Formset : Formset Guid =3D %g,= FormSet title =3D %s\n", gEfiCallerBaseName, &gFormData->FormSetGuid, For= mSetTitleStr)); - DEBUG ((DEBUG_ERROR, "[%a]: Mismatch Form : FormId =3D %d, Form t= itle =3D %s.\n", gEfiCallerBaseName, gFormData->FormId, FormTitleStr)); + DEBUG ((DEBUG_ERROR, "\n[%a]: Mismatch Formset : Formset Guid =3D %= g, FormSet title =3D %s\n", gEfiCallerBaseName, &gFormData->FormSetGuid, F= ormSetTitleStr)); + DEBUG ((DEBUG_ERROR, "[%a]: Mismatch Form : FormId =3D %d, Form= title =3D %s.\n", gEfiCallerBaseName, gFormData->FormId, FormTitleStr)); + } =20 if (Question->OpCode->OpCode =3D=3D EFI_IFR_ORDERED_LIST_OP) { QuestionName =3D GetToken (((EFI_IFR_ORDERED_LIST *)MenuOption->ThisTa= g->OpCode)->Question.Header.Prompt, gFormData->HiiHandle); diff --git a/MdeModulePkg/Universal/HiiDatabaseDxe/Font.c b/MdeModulePkg/Un= iversal/HiiDatabaseDxe/Font.c index 399f90feb783..8a0b12f72fbe 100644 --- a/MdeModulePkg/Universal/HiiDatabaseDxe/Font.c +++ b/MdeModulePkg/Universal/HiiDatabaseDxe/Font.c @@ -1745,6 +1745,7 @@ HiiStringToImage ( Attributes =3D (UINT8 *)AllocateZeroPool (StrLength * sizeof (UINT8)); ASSERT (Attributes !=3D NULL); =20 + FontInfo =3D NULL; RowInfo =3D NULL; Status =3D EFI_SUCCESS; StringIn2 =3D NULL; @@ -1787,11 +1788,14 @@ HiiStringToImage ( Background =3D ((EFI_FONT_DISPLAY_INFO *)StringInfo)->BackgroundCol= or; } else if (Status =3D=3D EFI_SUCCESS) { FontInfo =3D &StringInfoOut->FontInfo; - IsFontInfoExisted (Private, FontInfo, NULL, NULL, &GlobalFont); - Height =3D GlobalFont->FontPackage->Height; - BaseLine =3D GlobalFont->FontPackage->BaseLine; - Foreground =3D StringInfoOut->ForegroundColor; - Background =3D StringInfoOut->BackgroundColor; + if (IsFontInfoExisted (Private, FontInfo, NULL, NULL, &GlobalFont)) { + Height =3D GlobalFont->FontPackage->Height; + BaseLine =3D GlobalFont->FontPackage->BaseLine; + Foreground =3D StringInfoOut->ForegroundColor; + Background =3D StringInfoOut->BackgroundColor; + } else { + goto Exit; + } } else { goto Exit; } diff --git a/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c b/MdeMod= ulePkg/Universal/Variable/RuntimeDxe/Variable.c index 14c176887a55..3eb7d935b4d2 100644 --- a/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c +++ b/MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c @@ -2453,7 +2453,7 @@ VariableServiceGetVariable ( AcquireLockOnlyAtBootTime (&mVariableModuleGlobal->VariableGlobal.Variab= leServicesLock); =20 Status =3D FindVariable (VariableName, VendorGuid, &Variable, &mVariable= ModuleGlobal->VariableGlobal, FALSE); - if ((Variable.CurrPtr =3D=3D NULL) || EFI_ERROR (Status)) { + if (EFI_ERROR (Status) || (Variable.CurrPtr =3D=3D NULL)) { goto Done; } =20 --=20 2.39.2.windows.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#101025): https://edk2.groups.io/g/devel/message/101025 Mute This Topic: https://groups.io/mt/97526788/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-