ShellPkg: Fix conditionally uninitialized variables

Fixes CodeQL alerts for CWE-457:
https://cwe.mitre.org/data/definitions/457.html

Cc: Erich McMillan <emcmillan@microsoft.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
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: Zhichao Gao <zhichao.gao@intel.com>
Reviewed-by: Oliver Smith-Denny <osd@smith-denny.com>
This commit is contained in:
Michael Kubacki 2022-11-08 15:35:39 -05:00 committed by mergify[bot]
parent 7dc182ed1e
commit 11dd44dfbe
8 changed files with 108 additions and 90 deletions

View File

@ -1300,6 +1300,7 @@ DoStartupScript (
CHAR16 *FullFileStringPath;
UINTN NewSize;
CalleeStatus = EFI_SUCCESS;
Key.UnicodeChar = CHAR_NULL;
Key.ScanCode = 0;

View File

@ -735,10 +735,11 @@ EfiShellGetDeviceName (
//
// Now check the parent controller using this as the child.
//
if (DeviceNameToReturn == NULL) {
PARSE_HANDLE_DATABASE_PARENTS (DeviceHandle, &ParentControllerCount, &ParentControllerBuffer);
Status = PARSE_HANDLE_DATABASE_PARENTS (DeviceHandle, &ParentControllerCount, &ParentControllerBuffer);
if ((DeviceNameToReturn == NULL) && !EFI_ERROR (Status)) {
for (LoopVar = 0; LoopVar < ParentControllerCount; LoopVar++) {
PARSE_HANDLE_DATABASE_UEFI_DRIVERS (ParentControllerBuffer[LoopVar], &ParentDriverCount, &ParentDriverBuffer);
Status = PARSE_HANDLE_DATABASE_UEFI_DRIVERS (ParentControllerBuffer[LoopVar], &ParentDriverCount, &ParentDriverBuffer);
if (!EFI_ERROR (Status)) {
for (HandleCount = 0; HandleCount < ParentDriverCount; HandleCount++) {
//
// try using that driver's component name with controller and our driver as the child.
@ -780,6 +781,7 @@ EfiShellGetDeviceName (
break;
}
}
}
SHELL_FREE_NON_NULL (ParentControllerBuffer);
}

View File

@ -1399,6 +1399,7 @@ ShellCommandCreateInitialMappingsAndPaths (
CHAR16 *MapName;
SHELL_MAP_LIST *MapListItem;
ConsistMappingTable = NULL;
SplitCurDir = NULL;
MapName = NULL;
MapListItem = NULL;
@ -1458,7 +1459,7 @@ ShellCommandCreateInitialMappingsAndPaths (
//
PerformQuickSort (DevicePathList, Count, sizeof (EFI_DEVICE_PATH_PROTOCOL *), DevicePathCompare);
ShellCommandConsistMappingInitialize (&ConsistMappingTable);
if (!EFI_ERROR (ShellCommandConsistMappingInitialize (&ConsistMappingTable))) {
//
// Assign new Mappings to all...
//
@ -1482,8 +1483,11 @@ ShellCommandCreateInitialMappingsAndPaths (
FreePool (NewConsistName);
}
}
}
if (ConsistMappingTable != NULL) {
ShellCommandConsistMappingUnInitialize (ConsistMappingTable);
}
SHELL_FREE_NON_NULL (HandleList);
SHELL_FREE_NON_NULL (DevicePathList);
@ -1626,12 +1630,12 @@ ShellCommandUpdateMapping (
//
PerformQuickSort (DevicePathList, Count, sizeof (EFI_DEVICE_PATH_PROTOCOL *), DevicePathCompare);
ShellCommandConsistMappingInitialize (&ConsistMappingTable);
Status = ShellCommandConsistMappingInitialize (&ConsistMappingTable);
//
// Assign new Mappings to remainders
//
for (Count = 0; !EFI_ERROR (Status) && HandleList[Count] != NULL && !EFI_ERROR (Status); Count++) {
for (Count = 0; !EFI_ERROR (Status) && HandleList[Count] != NULL; Count++) {
//
// Skip ones that already have
//

View File

@ -158,7 +158,10 @@ ShellCommandRunDblk (
ShellStatus = SHELL_INVALID_PARAMETER;
}
ShellConvertStringToUint64 (LbaString, &Lba, TRUE, FALSE);
if (EFI_ERROR (ShellConvertStringToUint64 (LbaString, &Lba, TRUE, FALSE))) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"dblk", LbaString);
ShellStatus = SHELL_INVALID_PARAMETER;
}
}
if (BlockCountString == NULL) {
@ -169,7 +172,7 @@ ShellCommandRunDblk (
ShellStatus = SHELL_INVALID_PARAMETER;
}
ShellConvertStringToUint64 (BlockCountString, &BlockCount, TRUE, FALSE);
if (!EFI_ERROR (ShellConvertStringToUint64 (BlockCountString, &BlockCount, TRUE, FALSE))) {
if (BlockCount > 0x10) {
BlockCount = 0x10;
} else if (BlockCount == 0) {
@ -177,6 +180,7 @@ ShellCommandRunDblk (
ShellStatus = SHELL_INVALID_PARAMETER;
}
}
}
if (ShellStatus == SHELL_SUCCESS) {
//

View File

@ -112,10 +112,13 @@ ShellCommandRunEfiDecompress (
if (ShellStatus == SHELL_SUCCESS) {
Status = FileHandleGetSize (InFileHandle, &Temp64Bit);
ASSERT_EFI_ERROR (Status);
if (!EFI_ERROR (Status)) {
ASSERT (Temp64Bit <= (UINT32)(-1));
InSize = (UINTN)Temp64Bit;
ASSERT_EFI_ERROR (Status);
InBuffer = AllocateZeroPool (InSize);
}
if (InBuffer == NULL) {
Status = EFI_OUT_OF_RESOURCES;
} else {

View File

@ -509,8 +509,9 @@ ShellCommandRunConnect (
if (Param1 != NULL) {
Status = ShellConvertStringToUint64 (Param1, &Intermediate, TRUE, FALSE);
if (!EFI_ERROR (Status)) {
Handle1 = ConvertHandleIndexToHandle ((UINTN)Intermediate);
if (EFI_ERROR (Status)) {
} else {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_INV_HANDLE), gShellDriver1HiiHandle, L"connect", Param1);
ShellStatus = SHELL_INVALID_PARAMETER;
}
@ -520,8 +521,9 @@ ShellCommandRunConnect (
if (Param2 != NULL) {
Status = ShellConvertStringToUint64 (Param2, &Intermediate, TRUE, FALSE);
if (!EFI_ERROR (Status)) {
Handle2 = ConvertHandleIndexToHandle ((UINTN)Intermediate);
if (EFI_ERROR (Status)) {
} else {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_INV_HANDLE), gShellDriver1HiiHandle, L"connect", Param2);
ShellStatus = SHELL_INVALID_PARAMETER;
}

View File

@ -160,12 +160,17 @@ ShellCommandRunDisconnect (
Param1 = ShellCommandLineGetRawValue (Package, 1);
Param2 = ShellCommandLineGetRawValue (Package, 2);
Param3 = ShellCommandLineGetRawValue (Package, 3);
ShellConvertStringToUint64 (Param1, &Intermediate1, TRUE, FALSE);
if (!EFI_ERROR (ShellConvertStringToUint64 (Param1, &Intermediate1, TRUE, FALSE))) {
Handle1 = Param1 != NULL ? ConvertHandleIndexToHandle ((UINTN)Intermediate1) : NULL;
ShellConvertStringToUint64 (Param2, &Intermediate2, TRUE, FALSE);
}
if (!EFI_ERROR (ShellConvertStringToUint64 (Param2, &Intermediate2, TRUE, FALSE))) {
Handle2 = Param2 != NULL ? ConvertHandleIndexToHandle ((UINTN)Intermediate2) : NULL;
ShellConvertStringToUint64 (Param3, &Intermediate3, TRUE, FALSE);
}
if (!EFI_ERROR (ShellConvertStringToUint64 (Param3, &Intermediate3, TRUE, FALSE))) {
Handle3 = Param3 != NULL ? ConvertHandleIndexToHandle ((UINTN)Intermediate3) : NULL;
}
if ((Param1 != NULL) && (Handle1 == NULL)) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_INV_HANDLE), gShellDriver1HiiHandle, L"disconnect", Param1);

View File

@ -438,25 +438,22 @@ ShellCommandRunDrvDiag (
ControllerHandleStr = ShellCommandLineGetRawValue (Package, 2);
ChildHandleStr = ShellCommandLineGetRawValue (Package, 3);
if (DriverHandleStr == NULL) {
Handle1 = NULL;
} else {
ShellConvertStringToUint64 (DriverHandleStr, &Intermediate, TRUE, FALSE);
if ((DriverHandleStr != NULL) && !EFI_ERROR (ShellConvertStringToUint64 (DriverHandleStr, &Intermediate, TRUE, FALSE))) {
Handle1 = ConvertHandleIndexToHandle ((UINTN)Intermediate);
} else {
Handle1 = NULL;
}
if (ControllerHandleStr == NULL) {
Handle2 = NULL;
} else {
ShellConvertStringToUint64 (ControllerHandleStr, &Intermediate, TRUE, FALSE);
if ((ControllerHandleStr != NULL) && !EFI_ERROR (ShellConvertStringToUint64 (ControllerHandleStr, &Intermediate, TRUE, FALSE))) {
Handle2 = ConvertHandleIndexToHandle ((UINTN)Intermediate);
} else {
Handle2 = NULL;
}
if (ChildHandleStr == NULL) {
Handle3 = NULL;
} else {
ShellConvertStringToUint64 (ChildHandleStr, &Intermediate, TRUE, FALSE);
if ((ChildHandleStr != NULL) && !EFI_ERROR (ShellConvertStringToUint64 (ChildHandleStr, &Intermediate, TRUE, FALSE))) {
Handle3 = ConvertHandleIndexToHandle ((UINTN)Intermediate);
} else {
Handle3 = NULL;
}
Status = DoDiagnostics (