ShellPkg: UefiShellDriver1CommandsLib: CodeQL Fixes

Includes changes across the module for the following CodeQL rules:
 - cpp/comparison-with-wider-type
 - cpp/overflow-buffer
 - cpp/redundant-null-check-param
 - cpp/uselesstest

Co-authored-by: Taylor Beebe <taylor.d.beebe@gmail.com>

Signed-off-by: Oliver Smith-Denny <osde@linux.microsoft.com>
This commit is contained in:
Oliver Smith-Denny 2024-10-03 10:29:42 -07:00 committed by mergify[bot]
parent 86d91f4454
commit c69e5e647d
10 changed files with 259 additions and 87 deletions

View File

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

View File

@ -195,6 +195,12 @@ ShellCommandRunDevTree (
Lang = ShellCommandLineGetValue (Package, L"-l");
if (Lang != NULL) {
Language = AllocateZeroPool (StrSize (Lang));
if (Language == NULL) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_OUT_MEM), gShellDriver1HiiHandle, L"devtree");
ShellCommandLineFreeVarList (Package);
return (SHELL_OUT_OF_RESOURCES);
}
AsciiSPrint (Language, StrSize (Lang), "%S", Lang);
} else if (!ShellCommandLineGetFlag (Package, L"-l")) {
ASSERT (Language == NULL);
@ -212,6 +218,13 @@ ShellCommandRunDevTree (
Lang = ShellCommandLineGetRawValue (Package, 1);
HiiString = HiiGetString (gShellDriver1HiiHandle, STRING_TOKEN (STR_DEV_TREE_OUTPUT), Language);
if (HiiString == NULL) {
ASSERT (HiiString != NULL);
SHELL_FREE_NON_NULL (Language);
ShellCommandLineFreeVarList (Package);
return (SHELL_INVALID_PARAMETER);
}
if (Lang == NULL) {
for (LoopVar = 1; ; LoopVar++) {
TheHandle = ConvertHandleIndexToHandle (LoopVar);

View File

@ -190,6 +190,12 @@ ShellCommandRunDevices (
Lang = ShellCommandLineGetValue (Package, L"-l");
if (Lang != NULL) {
Language = AllocateZeroPool (StrSize (Lang));
if (Language == NULL) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_OUT_MEM), gShellDriver1HiiHandle, L"devices");
ShellCommandLineFreeVarList (Package);
return (SHELL_OUT_OF_RESOURCES);
}
AsciiSPrint (Language, StrSize (Lang), "%S", Lang);
} else if (!ShellCommandLineGetFlag (Package, L"-l")) {
ASSERT (Language == NULL);

View File

@ -218,7 +218,11 @@ GetDriverName (
return (EFI_NOT_FOUND);
}
Lang = GetBestLanguageForDriver (CompName2->SupportedLanguages, Language, FALSE);
Lang = GetBestLanguageForDriver (CompName2->SupportedLanguages, Language, FALSE);
if (Lang == NULL) {
return (EFI_NOT_FOUND);
}
Status = CompName2->GetDriverName (CompName2, Lang, &NameToReturn);
FreePool (Lang);
@ -1142,6 +1146,12 @@ ShellCommandRunDh (
Lang = ShellCommandLineGetValue (Package, L"-l");
if (Lang != NULL) {
Language = AllocateZeroPool (StrSize (Lang));
if (Language == NULL) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_OUT_MEM), gShellDriver1HiiHandle, L"dh");
ShellCommandLineFreeVarList (Package);
return (SHELL_OUT_OF_RESOURCES);
}
AsciiSPrint (Language, StrSize (Lang), "%S", Lang);
} else {
ASSERT (Language == NULL);
@ -1151,6 +1161,12 @@ ShellCommandRunDh (
}
} else {
Language = AllocateZeroPool (10);
if (Language == NULL) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_OUT_MEM), gShellDriver1HiiHandle, L"dh");
ShellCommandLineFreeVarList (Package);
return (SHELL_OUT_OF_RESOURCES);
}
AsciiSPrint (Language, 10, "en-us");
}

View File

@ -98,7 +98,10 @@ ShellCommandRunDisconnect (
UINT64 Intermediate2;
UINT64 Intermediate3;
ShellStatus = SHELL_SUCCESS;
Intermediate1 = 0;
Intermediate2 = 0;
Intermediate3 = 0;
ShellStatus = SHELL_SUCCESS;
//
// initialize the shell lib (we must be in non-auto-init...)
@ -160,25 +163,22 @@ ShellCommandRunDisconnect (
Param1 = ShellCommandLineGetRawValue (Package, 1);
Param2 = ShellCommandLineGetRawValue (Package, 2);
Param3 = ShellCommandLineGetRawValue (Package, 3);
if (Param1 && !EFI_ERROR (ShellConvertStringToUint64 (Param1, &Intermediate1, TRUE, FALSE))) {
Handle1 = ConvertHandleIndexToHandle ((UINTN)Intermediate1);
} else {
Handle1 = NULL;
if (Param1 != NULL) {
ShellConvertStringToUint64 (Param1, &Intermediate1, TRUE, FALSE);
}
if (Param2 && !EFI_ERROR (ShellConvertStringToUint64 (Param2, &Intermediate2, TRUE, FALSE))) {
Handle2 = ConvertHandleIndexToHandle ((UINTN)Intermediate2);
} else {
Handle2 = NULL;
Handle1 = Param1 != NULL ? ConvertHandleIndexToHandle ((UINTN)Intermediate1) : NULL;
if (Param2 != NULL) {
ShellConvertStringToUint64 (Param2, &Intermediate2, TRUE, FALSE);
}
if (Param3 && !EFI_ERROR (ShellConvertStringToUint64 (Param3, &Intermediate3, TRUE, FALSE))) {
Handle3 = ConvertHandleIndexToHandle ((UINTN)Intermediate3);
} else {
Handle3 = NULL;
Handle2 = Param2 != NULL ? ConvertHandleIndexToHandle ((UINTN)Intermediate2) : NULL;
if (Param3 != NULL) {
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);
ShellStatus = SHELL_INVALID_PARAMETER;

View File

@ -327,6 +327,12 @@ ShellCommandRunDrivers (
Lang = ShellCommandLineGetValue (Package, L"-l");
if (Lang != NULL) {
Language = AllocateZeroPool (StrSize (Lang));
if (Language == NULL) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_OUT_MEM), gShellDriver1HiiHandle, L"drivers");
ShellCommandLineFreeVarList (Package);
return (SHELL_OUT_OF_RESOURCES);
}
AsciiSPrint (Language, StrSize (Lang), "%S", Lang);
} else {
ASSERT (Language == NULL);
@ -364,6 +370,13 @@ ShellCommandRunDrivers (
);
}
if (FormatString == NULL) {
// Assume the string is present because it is hard-coded and report out of memory
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_OUT_MEM), gShellDriver1HiiHandle, L"drivers");
ShellCommandLineFreeVarList (Package);
return (SHELL_OUT_OF_RESOURCES);
}
HandleList = GetHandleListByProtocol (&gEfiDriverBindingProtocolGuid);
for (HandleWalker = HandleList; HandleWalker != NULL && *HandleWalker != NULL; HandleWalker++) {
ChildCount = 0;
@ -382,6 +395,12 @@ ShellCommandRunDrivers (
TruncatedDriverName = NULL;
if (!SfoFlag && (FullDriverName != NULL)) {
TruncatedDriverName = AllocateZeroPool ((MAX_LEN_DRIVER_NAME + 1) * sizeof (CHAR16));
if (TruncatedDriverName == NULL) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_OUT_MEM), gShellDriver1HiiHandle, L"drivers");
ShellCommandLineFreeVarList (Package);
return (SHELL_OUT_OF_RESOURCES);
}
StrnCpyS (TruncatedDriverName, MAX_LEN_DRIVER_NAME + 1, FullDriverName, MAX_LEN_DRIVER_NAME);
}

View File

@ -236,7 +236,20 @@ ConfigToFile (
Status = HiiDatabase->ExportPackageLists (HiiDatabase, HiiHandle, &MainBufferSize, MainBuffer);
if (Status == EFI_BUFFER_TOO_SMALL) {
MainBuffer = AllocateZeroPool (MainBufferSize);
Status = HiiDatabase->ExportPackageLists (HiiDatabase, HiiHandle, &MainBufferSize, MainBuffer);
if (MainBuffer == NULL) {
ShellPrintHiiEx (
-1,
-1,
NULL,
STRING_TOKEN (STR_GEN_OUT_MEM),
gShellDriver1HiiHandle,
L"drvcfg"
);
ShellCloseFile (&FileHandle);
return (SHELL_OUT_OF_RESOURCES);
}
Status = HiiDatabase->ExportPackageLists (HiiDatabase, HiiHandle, &MainBufferSize, MainBuffer);
}
Status = ShellWriteFile (FileHandle, &MainBufferSize, MainBuffer);
@ -292,11 +305,13 @@ ConfigFromFile (
EFI_HII_PACKAGE_HEADER *PackageHeader;
EFI_DEVICE_PATH_PROTOCOL *DevPath;
UINTN HandleIndex;
SHELL_STATUS ShellStatus;
HiiDatabase = NULL;
MainBufferSize = 0;
MainBuffer = NULL;
FileHandle = NULL;
ShellStatus = SHELL_SUCCESS;
Status = ShellOpenFileByName (FileName, &FileHandle, EFI_FILE_MODE_READ, 0);
if (EFI_ERROR (Status)) {
@ -310,7 +325,9 @@ ConfigFromFile (
FileName,
Status
);
return (SHELL_DEVICE_ERROR);
ShellStatus = SHELL_DEVICE_ERROR;
goto Done;
}
//
@ -333,8 +350,9 @@ ConfigFromFile (
L"EfiHiiDatabaseProtocol",
&gEfiHiiDatabaseProtocolGuid
);
ShellCloseFile (&FileHandle);
return (SHELL_NOT_FOUND);
ShellStatus = SHELL_NOT_FOUND;
goto Done;
}
Status = ShellGetFileSize (FileHandle, &Temp);
@ -350,11 +368,25 @@ ConfigFromFile (
FileName
);
ShellCloseFile (&FileHandle);
return (SHELL_DEVICE_ERROR);
ShellStatus = SHELL_DEVICE_ERROR;
goto Done;
}
MainBuffer = AllocateZeroPool ((UINTN)MainBufferSize);
if (MainBuffer == NULL) {
ShellPrintHiiEx (
-1,
-1,
NULL,
STRING_TOKEN (STR_GEN_OUT_MEM),
gShellDriver1HiiHandle,
L"drvcfg"
);
ShellStatus = SHELL_OUT_OF_RESOURCES;
goto Done;
}
if (EFI_ERROR (Status)) {
ShellPrintHiiEx (
-1,
@ -364,8 +396,9 @@ ConfigFromFile (
gShellDriver1HiiHandle,
L"drvcfg"
);
ShellCloseFile (&FileHandle);
return (SHELL_DEVICE_ERROR);
ShellStatus = SHELL_DEVICE_ERROR;
goto Done;
}
Status = ShellReadFile (FileHandle, &MainBufferSize, MainBuffer);
@ -380,12 +413,12 @@ ConfigFromFile (
FileName
);
ShellCloseFile (&FileHandle);
SHELL_FREE_NON_NULL (MainBuffer);
return (SHELL_DEVICE_ERROR);
ShellStatus = SHELL_DEVICE_ERROR;
goto Done;
}
ShellCloseFile (&FileHandle);
FileHandle = NULL;
if (Handle != NULL) {
//
@ -404,8 +437,9 @@ ConfigFromFile (
ConvertHandleToHandleIndex (Handle),
L"Device"
);
ShellCloseFile (&FileHandle);
return (SHELL_DEVICE_ERROR);
ShellStatus = SHELL_DEVICE_ERROR;
goto Done;
}
Status = HiiDatabase->UpdatePackageList (HiiDatabase, HiiHandle, MainBuffer);
@ -420,7 +454,9 @@ ConfigFromFile (
L"HiiDatabase->UpdatePackageList",
Status
);
return (SHELL_DEVICE_ERROR);
ShellStatus = SHELL_DEVICE_ERROR;
goto Done;
}
} else {
//
@ -443,6 +479,20 @@ ConfigFromFile (
// print out an error.
//
TempDevPathString = ConvertDevicePathToText ((EFI_DEVICE_PATH_PROTOCOL *)(((CHAR8 *)PackageHeader) + sizeof (EFI_HII_PACKAGE_HEADER)), TRUE, TRUE);
if (TempDevPathString == NULL) {
ShellPrintHiiEx (
-1,
-1,
NULL,
STRING_TOKEN (STR_GEN_OUT_MEM),
gShellDriver1HiiHandle,
L"drvcfg"
);
ShellStatus = SHELL_OUT_OF_RESOURCES;
goto Done;
}
ShellPrintHiiEx (
-1,
-1,
@ -465,7 +515,9 @@ ConfigFromFile (
L"HiiDatabase->UpdatePackageList",
Status
);
return (SHELL_DEVICE_ERROR);
ShellStatus = SHELL_DEVICE_ERROR;
goto Done;
} else {
DevPath = (EFI_DEVICE_PATH_PROTOCOL *)(((CHAR8 *)PackageHeader) + sizeof (EFI_HII_PACKAGE_HEADER));
gBS->LocateDevicePath (&gEfiHiiConfigAccessProtocolGuid, &DevPath, &Handle);
@ -485,16 +537,24 @@ ConfigFromFile (
}
}
Done:
SHELL_FREE_NON_NULL (MainBuffer);
ShellPrintHiiEx (
-1,
-1,
NULL,
STRING_TOKEN (STR_DRVCFG_COMP),
gShellDriver1HiiHandle
);
return (SHELL_SUCCESS);
if (FileHandle != NULL) {
ShellCloseFile (&FileHandle);
}
if (ShellStatus == SHELL_SUCCESS) {
ShellPrintHiiEx (
-1,
-1,
NULL,
STRING_TOKEN (STR_DRVCFG_COMP),
gShellDriver1HiiHandle
);
}
return ShellStatus;
}
/**
@ -661,7 +721,12 @@ PreHiiDrvCfg (
// keep consistent with the above clause
//
DriverImageHandleBuffer = AllocatePool (sizeof (EFI_HANDLE));
ASSERT (DriverImageHandleBuffer);
if (DriverImageHandleBuffer == NULL) {
ASSERT (DriverImageHandleBuffer);
ShellStatus = SHELL_OUT_OF_RESOURCES;
goto Done;
}
DriverImageHandleBuffer[0] = DriverImageHandle;
}
@ -1264,6 +1329,11 @@ ShellCommandRunDrvCfg (
Lang = ShellCommandLineGetValue (Package, L"-l");
if (Lang != NULL) {
Language = AllocateZeroPool (StrSize (Lang));
if (Language == NULL) {
ShellStatus = SHELL_OUT_OF_RESOURCES;
goto Done;
}
AsciiSPrint (Language, StrSize (Lang), "%S", Lang);
} else if (ShellCommandLineGetFlag (Package, L"-l")) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_VALUE), gShellDriver1HiiHandle, L"drvcfg", L"-l");
@ -1287,6 +1357,12 @@ ShellCommandRunDrvCfg (
FileName = NULL;
}
if (FileName == NULL) {
ASSERT (FileName != NULL);
ShellStatus = SHELL_INVALID_PARAMETER;
goto Done;
}
if (InFromFile && EFI_ERROR (ShellFileExists (FileName))) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_FIND_FAIL), gShellDriver1HiiHandle, L"drvcfg", FileName);
ShellStatus = SHELL_INVALID_PARAMETER;

View File

@ -108,8 +108,8 @@ DoDiagnostics (
if (ControllerHandle != NULL) {
ControllerHandleList = AllocateZeroPool (2*sizeof (EFI_HANDLE));
if (ControllerHandleList == NULL) {
SHELL_FREE_NON_NULL (DriverHandleList);
return EFI_OUT_OF_RESOURCES;
Status2 = EFI_OUT_OF_RESOURCES;
goto Done;
}
ControllerHandleList[0] = ControllerHandle;
@ -121,9 +121,8 @@ DoDiagnostics (
if (ChildHandle != NULL) {
ChildHandleList = AllocateZeroPool (2*sizeof (EFI_HANDLE));
if (ChildHandleList == NULL) {
SHELL_FREE_NON_NULL (ControllerHandleList);
SHELL_FREE_NON_NULL (DriverHandleList);
return EFI_OUT_OF_RESOURCES;
Status2 = EFI_OUT_OF_RESOURCES;
goto Done;
}
ChildHandleList[0] = ChildHandle;
@ -154,7 +153,7 @@ DoDiagnostics (
PARSE_HANDLE_DATABASE_DEVICES (DriverHandleList[DriverHandleListLoop], &ControllerHandleListCount, &ControllerHandleList);
}
if (ControllerHandleListCount == 0) {
if ((ControllerHandleListCount == 0) || (ControllerHandleList == NULL)) {
if (Mode == TestModeList) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DRVDIAG_DRIVER_NO_HANDLES), gShellDriver1HiiHandle);
}
@ -199,18 +198,24 @@ DoDiagnostics (
);
if (!EFI_ERROR (Status) && (DriverDiagnostics2 != NULL)) {
Language = GetBestLanguageForDriver (DriverDiagnostics2->SupportedLanguages, Lang, FALSE);
Found = TRUE;
Status = DriverDiagnostics2->RunDiagnostics (
DriverDiagnostics2,
ControllerHandleList[ControllerHandleListLoop],
ChildHandleList == NULL ? NULL : ChildHandleList[ChildHandleListLoop],
(EFI_DRIVER_DIAGNOSTIC_TYPE)Mode,
Language,
&ErrorType,
&OutBufferSize,
&OutBuffer
);
if (Language == NULL) {
Status2 = EFI_NOT_FOUND;
goto Done;
}
Found = TRUE;
Status = DriverDiagnostics2->RunDiagnostics (
DriverDiagnostics2,
ControllerHandleList[ControllerHandleListLoop],
ChildHandleList == NULL ? NULL : ChildHandleList[ChildHandleListLoop],
(EFI_DRIVER_DIAGNOSTIC_TYPE)Mode,
Language,
&ErrorType,
&OutBufferSize,
&OutBuffer
);
FreePool (Language);
Language = NULL;
}
}
@ -225,17 +230,23 @@ DoDiagnostics (
);
if (!EFI_ERROR (Status)) {
Language = GetBestLanguageForDriver (DriverDiagnostics->SupportedLanguages, Lang, FALSE);
Status = DriverDiagnostics->RunDiagnostics (
DriverDiagnostics,
ControllerHandleList[ControllerHandleListLoop],
ChildHandleList == NULL ? NULL : ChildHandleList[ChildHandleListLoop],
(EFI_DRIVER_DIAGNOSTIC_TYPE)Mode,
Language,
&ErrorType,
&OutBufferSize,
&OutBuffer
);
if (Language == NULL) {
Status2 = EFI_NOT_FOUND;
goto Done;
}
Status = DriverDiagnostics->RunDiagnostics (
DriverDiagnostics,
ControllerHandleList[ControllerHandleListLoop],
ChildHandleList == NULL ? NULL : ChildHandleList[ChildHandleListLoop],
(EFI_DRIVER_DIAGNOSTIC_TYPE)Mode,
Language,
&ErrorType,
&OutBufferSize,
&OutBuffer
);
FreePool (Language);
Language = NULL;
}
}
@ -307,17 +318,14 @@ DoDiagnostics (
}
}
if (DriverHandleList != NULL) {
FreePool (DriverHandleList);
}
Done:
if (ControllerHandleList != NULL) {
FreePool (ControllerHandleList);
}
if (ChildHandleList != NULL) {
FreePool (ChildHandleList);
}
SHELL_FREE_NON_NULL (DriverHandleList);
SHELL_FREE_NON_NULL (ControllerHandleList);
SHELL_FREE_NON_NULL (ChildHandleList);
SHELL_FREE_NON_NULL (Language);
SHELL_FREE_NON_NULL (OutBuffer);
SHELL_FREE_NON_NULL (ErrorType);
return (Status2);
}
@ -359,9 +367,10 @@ ShellCommandRunDrvDiag (
EFI_HANDLE Handle3;
UINT64 Intermediate;
ShellStatus = SHELL_SUCCESS;
Mode = TestModeMax;
Language = NULL;
Intermediate = 0;
ShellStatus = SHELL_SUCCESS;
Mode = TestModeMax;
Language = NULL;
//
// initialize the shell lib (we must be in non-auto-init...)
@ -431,6 +440,12 @@ ShellCommandRunDrvDiag (
return (SHELL_INVALID_PARAMETER);
} else if (Lang != NULL) {
Language = AllocateZeroPool (StrSize (Lang));
if (Language == NULL) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_OUT_MEM), gShellDriver1HiiHandle, L"drvdiag");
ShellCommandLineFreeVarList (Package);
return (SHELL_OUT_OF_RESOURCES);
}
AsciiSPrint (Language, StrSize (Lang), "%S", Lang);
}

View File

@ -25,6 +25,7 @@ STATIC CONST CHAR16 StringUnknown[] = L"Unknown ";
@retval EFI_SUCCESS The operation was successful.
@retval EFI_INVALID_PARAMETER TheHandle was NULL.
@retval EFI_OUT_OF_RESOURCES A memory allocation failed.
**/
EFI_STATUS
TraverseHandleDatabase (
@ -102,10 +103,16 @@ TraverseHandleDatabase (
break;
}
HandleIndex = ConvertHandleToHandleIndex (OpenInfo[OpenInfoIndex].AgentHandle);
HandleIndex = ConvertHandleToHandleIndex (OpenInfo[OpenInfoIndex].AgentHandle);
if (HandleIndex == 0) {
FreePool (OpenInfo);
FreePool (ProtocolGuidArray);
return EFI_OUT_OF_RESOURCES;
}
Name = GetStringNameFromHandle (OpenInfo[OpenInfoIndex].AgentHandle, NULL);
ControllerIndex = ConvertHandleToHandleIndex (OpenInfo[OpenInfoIndex].ControllerHandle);
if (ControllerIndex != 0) {
if ((ControllerIndex != 0) && (Name != NULL)) {
ShellPrintHiiEx (
-1,
-1,
@ -118,7 +125,7 @@ TraverseHandleDatabase (
OpenTypeString,
Name
);
} else {
} else if (Name != NULL) {
ShellPrintHiiEx (
-1,
-1,
@ -199,13 +206,21 @@ ShellCommandRunOpenInfo (
ShellStatus = SHELL_INVALID_PARAMETER;
} else {
Param1 = ShellCommandLineGetRawValue (Package, 1);
Status = ShellConvertStringToUint64 (Param1, &Intermediate, TRUE, FALSE);
if (Param1 != NULL) {
Status = ShellConvertStringToUint64 (Param1, &Intermediate, TRUE, FALSE);
}
if (EFI_ERROR (Status) || (Param1 == NULL) || (ConvertHandleIndexToHandle ((UINTN)Intermediate) == NULL)) {
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_INV_HANDLE), gShellDriver1HiiHandle, L"openinfo", Param1);
ShellStatus = SHELL_INVALID_PARAMETER;
} else {
TheHandle = ConvertHandleIndexToHandle ((UINTN)Intermediate);
ASSERT (TheHandle != NULL);
if (TheHandle == NULL) {
ASSERT (TheHandle != NULL);
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_INV_HANDLE), gShellDriver1HiiHandle, L"openinfo", Param1);
return SHELL_INVALID_PARAMETER;
}
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_OPENINFO_HEADER_LINE), gShellDriver1HiiHandle, (UINTN)Intermediate, TheHandle);
Status = TraverseHandleDatabase (TheHandle);

View File

@ -25,6 +25,9 @@ DumpLoadedImageProtocolInfo (
CHAR16 *TheString;
TheString = GetProtocolInformationDump (TheHandle, &gEfiLoadedImageProtocolGuid, TRUE);
if (TheString == NULL) {
return (EFI_INVALID_PARAMETER);
}
ShellPrintEx (-1, -1, L"%s", TheString);