mirror of
https://github.com/acidanthera/audk.git
synced 2025-04-08 17:05:09 +02:00
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:
parent
86d91f4454
commit
c69e5e647d
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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");
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user