mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-25 22:54:51 +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) {
|
if (Param1 != NULL) {
|
||||||
Status = ShellConvertStringToUint64 (Param1, &Intermediate, TRUE, FALSE);
|
Status = ShellConvertStringToUint64 (Param1, &Intermediate, TRUE, FALSE);
|
||||||
if (!EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
Handle1 = ConvertHandleIndexToHandle ((UINTN)Intermediate);
|
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_INV_HANDLE), gShellDriver1HiiHandle, L"connect", Param1);
|
||||||
} else {
|
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);
|
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_INV_HANDLE), gShellDriver1HiiHandle, L"connect", Param1);
|
||||||
ShellStatus = SHELL_INVALID_PARAMETER;
|
ShellStatus = SHELL_INVALID_PARAMETER;
|
||||||
}
|
}
|
||||||
|
@ -195,6 +195,12 @@ ShellCommandRunDevTree (
|
|||||||
Lang = ShellCommandLineGetValue (Package, L"-l");
|
Lang = ShellCommandLineGetValue (Package, L"-l");
|
||||||
if (Lang != NULL) {
|
if (Lang != NULL) {
|
||||||
Language = AllocateZeroPool (StrSize (Lang));
|
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);
|
AsciiSPrint (Language, StrSize (Lang), "%S", Lang);
|
||||||
} else if (!ShellCommandLineGetFlag (Package, L"-l")) {
|
} else if (!ShellCommandLineGetFlag (Package, L"-l")) {
|
||||||
ASSERT (Language == NULL);
|
ASSERT (Language == NULL);
|
||||||
@ -212,6 +218,13 @@ ShellCommandRunDevTree (
|
|||||||
Lang = ShellCommandLineGetRawValue (Package, 1);
|
Lang = ShellCommandLineGetRawValue (Package, 1);
|
||||||
HiiString = HiiGetString (gShellDriver1HiiHandle, STRING_TOKEN (STR_DEV_TREE_OUTPUT), Language);
|
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) {
|
if (Lang == NULL) {
|
||||||
for (LoopVar = 1; ; LoopVar++) {
|
for (LoopVar = 1; ; LoopVar++) {
|
||||||
TheHandle = ConvertHandleIndexToHandle (LoopVar);
|
TheHandle = ConvertHandleIndexToHandle (LoopVar);
|
||||||
|
@ -190,6 +190,12 @@ ShellCommandRunDevices (
|
|||||||
Lang = ShellCommandLineGetValue (Package, L"-l");
|
Lang = ShellCommandLineGetValue (Package, L"-l");
|
||||||
if (Lang != NULL) {
|
if (Lang != NULL) {
|
||||||
Language = AllocateZeroPool (StrSize (Lang));
|
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);
|
AsciiSPrint (Language, StrSize (Lang), "%S", Lang);
|
||||||
} else if (!ShellCommandLineGetFlag (Package, L"-l")) {
|
} else if (!ShellCommandLineGetFlag (Package, L"-l")) {
|
||||||
ASSERT (Language == NULL);
|
ASSERT (Language == NULL);
|
||||||
|
@ -218,7 +218,11 @@ GetDriverName (
|
|||||||
return (EFI_NOT_FOUND);
|
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);
|
Status = CompName2->GetDriverName (CompName2, Lang, &NameToReturn);
|
||||||
FreePool (Lang);
|
FreePool (Lang);
|
||||||
|
|
||||||
@ -1142,6 +1146,12 @@ ShellCommandRunDh (
|
|||||||
Lang = ShellCommandLineGetValue (Package, L"-l");
|
Lang = ShellCommandLineGetValue (Package, L"-l");
|
||||||
if (Lang != NULL) {
|
if (Lang != NULL) {
|
||||||
Language = AllocateZeroPool (StrSize (Lang));
|
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);
|
AsciiSPrint (Language, StrSize (Lang), "%S", Lang);
|
||||||
} else {
|
} else {
|
||||||
ASSERT (Language == NULL);
|
ASSERT (Language == NULL);
|
||||||
@ -1151,6 +1161,12 @@ ShellCommandRunDh (
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Language = AllocateZeroPool (10);
|
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");
|
AsciiSPrint (Language, 10, "en-us");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -98,7 +98,10 @@ ShellCommandRunDisconnect (
|
|||||||
UINT64 Intermediate2;
|
UINT64 Intermediate2;
|
||||||
UINT64 Intermediate3;
|
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...)
|
// initialize the shell lib (we must be in non-auto-init...)
|
||||||
@ -160,25 +163,22 @@ ShellCommandRunDisconnect (
|
|||||||
Param1 = ShellCommandLineGetRawValue (Package, 1);
|
Param1 = ShellCommandLineGetRawValue (Package, 1);
|
||||||
Param2 = ShellCommandLineGetRawValue (Package, 2);
|
Param2 = ShellCommandLineGetRawValue (Package, 2);
|
||||||
Param3 = ShellCommandLineGetRawValue (Package, 3);
|
Param3 = ShellCommandLineGetRawValue (Package, 3);
|
||||||
|
if (Param1 != NULL) {
|
||||||
if (Param1 && !EFI_ERROR (ShellConvertStringToUint64 (Param1, &Intermediate1, TRUE, FALSE))) {
|
ShellConvertStringToUint64 (Param1, &Intermediate1, TRUE, FALSE);
|
||||||
Handle1 = ConvertHandleIndexToHandle ((UINTN)Intermediate1);
|
|
||||||
} else {
|
|
||||||
Handle1 = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Param2 && !EFI_ERROR (ShellConvertStringToUint64 (Param2, &Intermediate2, TRUE, FALSE))) {
|
Handle1 = Param1 != NULL ? ConvertHandleIndexToHandle ((UINTN)Intermediate1) : NULL;
|
||||||
Handle2 = ConvertHandleIndexToHandle ((UINTN)Intermediate2);
|
if (Param2 != NULL) {
|
||||||
} else {
|
ShellConvertStringToUint64 (Param2, &Intermediate2, TRUE, FALSE);
|
||||||
Handle2 = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Param3 && !EFI_ERROR (ShellConvertStringToUint64 (Param3, &Intermediate3, TRUE, FALSE))) {
|
Handle2 = Param2 != NULL ? ConvertHandleIndexToHandle ((UINTN)Intermediate2) : NULL;
|
||||||
Handle3 = ConvertHandleIndexToHandle ((UINTN)Intermediate3);
|
if (Param3 != NULL) {
|
||||||
} else {
|
ShellConvertStringToUint64 (Param3, &Intermediate3, TRUE, FALSE);
|
||||||
Handle3 = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Handle3 = Param3 != NULL ? ConvertHandleIndexToHandle ((UINTN)Intermediate3) : NULL;
|
||||||
|
|
||||||
if ((Param1 != NULL) && (Handle1 == NULL)) {
|
if ((Param1 != NULL) && (Handle1 == NULL)) {
|
||||||
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_INV_HANDLE), gShellDriver1HiiHandle, L"disconnect", Param1);
|
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_INV_HANDLE), gShellDriver1HiiHandle, L"disconnect", Param1);
|
||||||
ShellStatus = SHELL_INVALID_PARAMETER;
|
ShellStatus = SHELL_INVALID_PARAMETER;
|
||||||
|
@ -327,6 +327,12 @@ ShellCommandRunDrivers (
|
|||||||
Lang = ShellCommandLineGetValue (Package, L"-l");
|
Lang = ShellCommandLineGetValue (Package, L"-l");
|
||||||
if (Lang != NULL) {
|
if (Lang != NULL) {
|
||||||
Language = AllocateZeroPool (StrSize (Lang));
|
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);
|
AsciiSPrint (Language, StrSize (Lang), "%S", Lang);
|
||||||
} else {
|
} else {
|
||||||
ASSERT (Language == NULL);
|
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);
|
HandleList = GetHandleListByProtocol (&gEfiDriverBindingProtocolGuid);
|
||||||
for (HandleWalker = HandleList; HandleWalker != NULL && *HandleWalker != NULL; HandleWalker++) {
|
for (HandleWalker = HandleList; HandleWalker != NULL && *HandleWalker != NULL; HandleWalker++) {
|
||||||
ChildCount = 0;
|
ChildCount = 0;
|
||||||
@ -382,6 +395,12 @@ ShellCommandRunDrivers (
|
|||||||
TruncatedDriverName = NULL;
|
TruncatedDriverName = NULL;
|
||||||
if (!SfoFlag && (FullDriverName != NULL)) {
|
if (!SfoFlag && (FullDriverName != NULL)) {
|
||||||
TruncatedDriverName = AllocateZeroPool ((MAX_LEN_DRIVER_NAME + 1) * sizeof (CHAR16));
|
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);
|
StrnCpyS (TruncatedDriverName, MAX_LEN_DRIVER_NAME + 1, FullDriverName, MAX_LEN_DRIVER_NAME);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -236,7 +236,20 @@ ConfigToFile (
|
|||||||
Status = HiiDatabase->ExportPackageLists (HiiDatabase, HiiHandle, &MainBufferSize, MainBuffer);
|
Status = HiiDatabase->ExportPackageLists (HiiDatabase, HiiHandle, &MainBufferSize, MainBuffer);
|
||||||
if (Status == EFI_BUFFER_TOO_SMALL) {
|
if (Status == EFI_BUFFER_TOO_SMALL) {
|
||||||
MainBuffer = AllocateZeroPool (MainBufferSize);
|
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);
|
Status = ShellWriteFile (FileHandle, &MainBufferSize, MainBuffer);
|
||||||
@ -292,11 +305,13 @@ ConfigFromFile (
|
|||||||
EFI_HII_PACKAGE_HEADER *PackageHeader;
|
EFI_HII_PACKAGE_HEADER *PackageHeader;
|
||||||
EFI_DEVICE_PATH_PROTOCOL *DevPath;
|
EFI_DEVICE_PATH_PROTOCOL *DevPath;
|
||||||
UINTN HandleIndex;
|
UINTN HandleIndex;
|
||||||
|
SHELL_STATUS ShellStatus;
|
||||||
|
|
||||||
HiiDatabase = NULL;
|
HiiDatabase = NULL;
|
||||||
MainBufferSize = 0;
|
MainBufferSize = 0;
|
||||||
MainBuffer = NULL;
|
MainBuffer = NULL;
|
||||||
FileHandle = NULL;
|
FileHandle = NULL;
|
||||||
|
ShellStatus = SHELL_SUCCESS;
|
||||||
|
|
||||||
Status = ShellOpenFileByName (FileName, &FileHandle, EFI_FILE_MODE_READ, 0);
|
Status = ShellOpenFileByName (FileName, &FileHandle, EFI_FILE_MODE_READ, 0);
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
@ -310,7 +325,9 @@ ConfigFromFile (
|
|||||||
FileName,
|
FileName,
|
||||||
Status
|
Status
|
||||||
);
|
);
|
||||||
return (SHELL_DEVICE_ERROR);
|
|
||||||
|
ShellStatus = SHELL_DEVICE_ERROR;
|
||||||
|
goto Done;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
@ -333,8 +350,9 @@ ConfigFromFile (
|
|||||||
L"EfiHiiDatabaseProtocol",
|
L"EfiHiiDatabaseProtocol",
|
||||||
&gEfiHiiDatabaseProtocolGuid
|
&gEfiHiiDatabaseProtocolGuid
|
||||||
);
|
);
|
||||||
ShellCloseFile (&FileHandle);
|
|
||||||
return (SHELL_NOT_FOUND);
|
ShellStatus = SHELL_NOT_FOUND;
|
||||||
|
goto Done;
|
||||||
}
|
}
|
||||||
|
|
||||||
Status = ShellGetFileSize (FileHandle, &Temp);
|
Status = ShellGetFileSize (FileHandle, &Temp);
|
||||||
@ -350,11 +368,25 @@ ConfigFromFile (
|
|||||||
FileName
|
FileName
|
||||||
);
|
);
|
||||||
|
|
||||||
ShellCloseFile (&FileHandle);
|
ShellStatus = SHELL_DEVICE_ERROR;
|
||||||
return (SHELL_DEVICE_ERROR);
|
goto Done;
|
||||||
}
|
}
|
||||||
|
|
||||||
MainBuffer = AllocateZeroPool ((UINTN)MainBufferSize);
|
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)) {
|
if (EFI_ERROR (Status)) {
|
||||||
ShellPrintHiiEx (
|
ShellPrintHiiEx (
|
||||||
-1,
|
-1,
|
||||||
@ -364,8 +396,9 @@ ConfigFromFile (
|
|||||||
gShellDriver1HiiHandle,
|
gShellDriver1HiiHandle,
|
||||||
L"drvcfg"
|
L"drvcfg"
|
||||||
);
|
);
|
||||||
ShellCloseFile (&FileHandle);
|
|
||||||
return (SHELL_DEVICE_ERROR);
|
ShellStatus = SHELL_DEVICE_ERROR;
|
||||||
|
goto Done;
|
||||||
}
|
}
|
||||||
|
|
||||||
Status = ShellReadFile (FileHandle, &MainBufferSize, MainBuffer);
|
Status = ShellReadFile (FileHandle, &MainBufferSize, MainBuffer);
|
||||||
@ -380,12 +413,12 @@ ConfigFromFile (
|
|||||||
FileName
|
FileName
|
||||||
);
|
);
|
||||||
|
|
||||||
ShellCloseFile (&FileHandle);
|
ShellStatus = SHELL_DEVICE_ERROR;
|
||||||
SHELL_FREE_NON_NULL (MainBuffer);
|
goto Done;
|
||||||
return (SHELL_DEVICE_ERROR);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ShellCloseFile (&FileHandle);
|
ShellCloseFile (&FileHandle);
|
||||||
|
FileHandle = NULL;
|
||||||
|
|
||||||
if (Handle != NULL) {
|
if (Handle != NULL) {
|
||||||
//
|
//
|
||||||
@ -404,8 +437,9 @@ ConfigFromFile (
|
|||||||
ConvertHandleToHandleIndex (Handle),
|
ConvertHandleToHandleIndex (Handle),
|
||||||
L"Device"
|
L"Device"
|
||||||
);
|
);
|
||||||
ShellCloseFile (&FileHandle);
|
|
||||||
return (SHELL_DEVICE_ERROR);
|
ShellStatus = SHELL_DEVICE_ERROR;
|
||||||
|
goto Done;
|
||||||
}
|
}
|
||||||
|
|
||||||
Status = HiiDatabase->UpdatePackageList (HiiDatabase, HiiHandle, MainBuffer);
|
Status = HiiDatabase->UpdatePackageList (HiiDatabase, HiiHandle, MainBuffer);
|
||||||
@ -420,7 +454,9 @@ ConfigFromFile (
|
|||||||
L"HiiDatabase->UpdatePackageList",
|
L"HiiDatabase->UpdatePackageList",
|
||||||
Status
|
Status
|
||||||
);
|
);
|
||||||
return (SHELL_DEVICE_ERROR);
|
|
||||||
|
ShellStatus = SHELL_DEVICE_ERROR;
|
||||||
|
goto Done;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
//
|
//
|
||||||
@ -443,6 +479,20 @@ ConfigFromFile (
|
|||||||
// print out an error.
|
// print out an error.
|
||||||
//
|
//
|
||||||
TempDevPathString = ConvertDevicePathToText ((EFI_DEVICE_PATH_PROTOCOL *)(((CHAR8 *)PackageHeader) + sizeof (EFI_HII_PACKAGE_HEADER)), TRUE, TRUE);
|
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 (
|
ShellPrintHiiEx (
|
||||||
-1,
|
-1,
|
||||||
-1,
|
-1,
|
||||||
@ -465,7 +515,9 @@ ConfigFromFile (
|
|||||||
L"HiiDatabase->UpdatePackageList",
|
L"HiiDatabase->UpdatePackageList",
|
||||||
Status
|
Status
|
||||||
);
|
);
|
||||||
return (SHELL_DEVICE_ERROR);
|
|
||||||
|
ShellStatus = SHELL_DEVICE_ERROR;
|
||||||
|
goto Done;
|
||||||
} else {
|
} else {
|
||||||
DevPath = (EFI_DEVICE_PATH_PROTOCOL *)(((CHAR8 *)PackageHeader) + sizeof (EFI_HII_PACKAGE_HEADER));
|
DevPath = (EFI_DEVICE_PATH_PROTOCOL *)(((CHAR8 *)PackageHeader) + sizeof (EFI_HII_PACKAGE_HEADER));
|
||||||
gBS->LocateDevicePath (&gEfiHiiConfigAccessProtocolGuid, &DevPath, &Handle);
|
gBS->LocateDevicePath (&gEfiHiiConfigAccessProtocolGuid, &DevPath, &Handle);
|
||||||
@ -485,16 +537,24 @@ ConfigFromFile (
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Done:
|
||||||
SHELL_FREE_NON_NULL (MainBuffer);
|
SHELL_FREE_NON_NULL (MainBuffer);
|
||||||
|
|
||||||
ShellPrintHiiEx (
|
if (FileHandle != NULL) {
|
||||||
-1,
|
ShellCloseFile (&FileHandle);
|
||||||
-1,
|
}
|
||||||
NULL,
|
|
||||||
STRING_TOKEN (STR_DRVCFG_COMP),
|
if (ShellStatus == SHELL_SUCCESS) {
|
||||||
gShellDriver1HiiHandle
|
ShellPrintHiiEx (
|
||||||
);
|
-1,
|
||||||
return (SHELL_SUCCESS);
|
-1,
|
||||||
|
NULL,
|
||||||
|
STRING_TOKEN (STR_DRVCFG_COMP),
|
||||||
|
gShellDriver1HiiHandle
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ShellStatus;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -661,7 +721,12 @@ PreHiiDrvCfg (
|
|||||||
// keep consistent with the above clause
|
// keep consistent with the above clause
|
||||||
//
|
//
|
||||||
DriverImageHandleBuffer = AllocatePool (sizeof (EFI_HANDLE));
|
DriverImageHandleBuffer = AllocatePool (sizeof (EFI_HANDLE));
|
||||||
ASSERT (DriverImageHandleBuffer);
|
if (DriverImageHandleBuffer == NULL) {
|
||||||
|
ASSERT (DriverImageHandleBuffer);
|
||||||
|
ShellStatus = SHELL_OUT_OF_RESOURCES;
|
||||||
|
goto Done;
|
||||||
|
}
|
||||||
|
|
||||||
DriverImageHandleBuffer[0] = DriverImageHandle;
|
DriverImageHandleBuffer[0] = DriverImageHandle;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1264,6 +1329,11 @@ ShellCommandRunDrvCfg (
|
|||||||
Lang = ShellCommandLineGetValue (Package, L"-l");
|
Lang = ShellCommandLineGetValue (Package, L"-l");
|
||||||
if (Lang != NULL) {
|
if (Lang != NULL) {
|
||||||
Language = AllocateZeroPool (StrSize (Lang));
|
Language = AllocateZeroPool (StrSize (Lang));
|
||||||
|
if (Language == NULL) {
|
||||||
|
ShellStatus = SHELL_OUT_OF_RESOURCES;
|
||||||
|
goto Done;
|
||||||
|
}
|
||||||
|
|
||||||
AsciiSPrint (Language, StrSize (Lang), "%S", Lang);
|
AsciiSPrint (Language, StrSize (Lang), "%S", Lang);
|
||||||
} else if (ShellCommandLineGetFlag (Package, L"-l")) {
|
} else if (ShellCommandLineGetFlag (Package, L"-l")) {
|
||||||
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_VALUE), gShellDriver1HiiHandle, L"drvcfg", L"-l");
|
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_VALUE), gShellDriver1HiiHandle, L"drvcfg", L"-l");
|
||||||
@ -1287,6 +1357,12 @@ ShellCommandRunDrvCfg (
|
|||||||
FileName = NULL;
|
FileName = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (FileName == NULL) {
|
||||||
|
ASSERT (FileName != NULL);
|
||||||
|
ShellStatus = SHELL_INVALID_PARAMETER;
|
||||||
|
goto Done;
|
||||||
|
}
|
||||||
|
|
||||||
if (InFromFile && EFI_ERROR (ShellFileExists (FileName))) {
|
if (InFromFile && EFI_ERROR (ShellFileExists (FileName))) {
|
||||||
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_FIND_FAIL), gShellDriver1HiiHandle, L"drvcfg", FileName);
|
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_FIND_FAIL), gShellDriver1HiiHandle, L"drvcfg", FileName);
|
||||||
ShellStatus = SHELL_INVALID_PARAMETER;
|
ShellStatus = SHELL_INVALID_PARAMETER;
|
||||||
|
@ -108,8 +108,8 @@ DoDiagnostics (
|
|||||||
if (ControllerHandle != NULL) {
|
if (ControllerHandle != NULL) {
|
||||||
ControllerHandleList = AllocateZeroPool (2*sizeof (EFI_HANDLE));
|
ControllerHandleList = AllocateZeroPool (2*sizeof (EFI_HANDLE));
|
||||||
if (ControllerHandleList == NULL) {
|
if (ControllerHandleList == NULL) {
|
||||||
SHELL_FREE_NON_NULL (DriverHandleList);
|
Status2 = EFI_OUT_OF_RESOURCES;
|
||||||
return EFI_OUT_OF_RESOURCES;
|
goto Done;
|
||||||
}
|
}
|
||||||
|
|
||||||
ControllerHandleList[0] = ControllerHandle;
|
ControllerHandleList[0] = ControllerHandle;
|
||||||
@ -121,9 +121,8 @@ DoDiagnostics (
|
|||||||
if (ChildHandle != NULL) {
|
if (ChildHandle != NULL) {
|
||||||
ChildHandleList = AllocateZeroPool (2*sizeof (EFI_HANDLE));
|
ChildHandleList = AllocateZeroPool (2*sizeof (EFI_HANDLE));
|
||||||
if (ChildHandleList == NULL) {
|
if (ChildHandleList == NULL) {
|
||||||
SHELL_FREE_NON_NULL (ControllerHandleList);
|
Status2 = EFI_OUT_OF_RESOURCES;
|
||||||
SHELL_FREE_NON_NULL (DriverHandleList);
|
goto Done;
|
||||||
return EFI_OUT_OF_RESOURCES;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ChildHandleList[0] = ChildHandle;
|
ChildHandleList[0] = ChildHandle;
|
||||||
@ -154,7 +153,7 @@ DoDiagnostics (
|
|||||||
PARSE_HANDLE_DATABASE_DEVICES (DriverHandleList[DriverHandleListLoop], &ControllerHandleListCount, &ControllerHandleList);
|
PARSE_HANDLE_DATABASE_DEVICES (DriverHandleList[DriverHandleListLoop], &ControllerHandleListCount, &ControllerHandleList);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ControllerHandleListCount == 0) {
|
if ((ControllerHandleListCount == 0) || (ControllerHandleList == NULL)) {
|
||||||
if (Mode == TestModeList) {
|
if (Mode == TestModeList) {
|
||||||
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DRVDIAG_DRIVER_NO_HANDLES), gShellDriver1HiiHandle);
|
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DRVDIAG_DRIVER_NO_HANDLES), gShellDriver1HiiHandle);
|
||||||
}
|
}
|
||||||
@ -199,18 +198,24 @@ DoDiagnostics (
|
|||||||
);
|
);
|
||||||
if (!EFI_ERROR (Status) && (DriverDiagnostics2 != NULL)) {
|
if (!EFI_ERROR (Status) && (DriverDiagnostics2 != NULL)) {
|
||||||
Language = GetBestLanguageForDriver (DriverDiagnostics2->SupportedLanguages, Lang, FALSE);
|
Language = GetBestLanguageForDriver (DriverDiagnostics2->SupportedLanguages, Lang, FALSE);
|
||||||
Found = TRUE;
|
if (Language == NULL) {
|
||||||
Status = DriverDiagnostics2->RunDiagnostics (
|
Status2 = EFI_NOT_FOUND;
|
||||||
DriverDiagnostics2,
|
goto Done;
|
||||||
ControllerHandleList[ControllerHandleListLoop],
|
}
|
||||||
ChildHandleList == NULL ? NULL : ChildHandleList[ChildHandleListLoop],
|
|
||||||
(EFI_DRIVER_DIAGNOSTIC_TYPE)Mode,
|
Found = TRUE;
|
||||||
Language,
|
Status = DriverDiagnostics2->RunDiagnostics (
|
||||||
&ErrorType,
|
DriverDiagnostics2,
|
||||||
&OutBufferSize,
|
ControllerHandleList[ControllerHandleListLoop],
|
||||||
&OutBuffer
|
ChildHandleList == NULL ? NULL : ChildHandleList[ChildHandleListLoop],
|
||||||
);
|
(EFI_DRIVER_DIAGNOSTIC_TYPE)Mode,
|
||||||
|
Language,
|
||||||
|
&ErrorType,
|
||||||
|
&OutBufferSize,
|
||||||
|
&OutBuffer
|
||||||
|
);
|
||||||
FreePool (Language);
|
FreePool (Language);
|
||||||
|
Language = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -225,17 +230,23 @@ DoDiagnostics (
|
|||||||
);
|
);
|
||||||
if (!EFI_ERROR (Status)) {
|
if (!EFI_ERROR (Status)) {
|
||||||
Language = GetBestLanguageForDriver (DriverDiagnostics->SupportedLanguages, Lang, FALSE);
|
Language = GetBestLanguageForDriver (DriverDiagnostics->SupportedLanguages, Lang, FALSE);
|
||||||
Status = DriverDiagnostics->RunDiagnostics (
|
if (Language == NULL) {
|
||||||
DriverDiagnostics,
|
Status2 = EFI_NOT_FOUND;
|
||||||
ControllerHandleList[ControllerHandleListLoop],
|
goto Done;
|
||||||
ChildHandleList == NULL ? NULL : ChildHandleList[ChildHandleListLoop],
|
}
|
||||||
(EFI_DRIVER_DIAGNOSTIC_TYPE)Mode,
|
|
||||||
Language,
|
Status = DriverDiagnostics->RunDiagnostics (
|
||||||
&ErrorType,
|
DriverDiagnostics,
|
||||||
&OutBufferSize,
|
ControllerHandleList[ControllerHandleListLoop],
|
||||||
&OutBuffer
|
ChildHandleList == NULL ? NULL : ChildHandleList[ChildHandleListLoop],
|
||||||
);
|
(EFI_DRIVER_DIAGNOSTIC_TYPE)Mode,
|
||||||
|
Language,
|
||||||
|
&ErrorType,
|
||||||
|
&OutBufferSize,
|
||||||
|
&OutBuffer
|
||||||
|
);
|
||||||
FreePool (Language);
|
FreePool (Language);
|
||||||
|
Language = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -307,17 +318,14 @@ DoDiagnostics (
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (DriverHandleList != NULL) {
|
Done:
|
||||||
FreePool (DriverHandleList);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ControllerHandleList != NULL) {
|
SHELL_FREE_NON_NULL (DriverHandleList);
|
||||||
FreePool (ControllerHandleList);
|
SHELL_FREE_NON_NULL (ControllerHandleList);
|
||||||
}
|
SHELL_FREE_NON_NULL (ChildHandleList);
|
||||||
|
SHELL_FREE_NON_NULL (Language);
|
||||||
if (ChildHandleList != NULL) {
|
SHELL_FREE_NON_NULL (OutBuffer);
|
||||||
FreePool (ChildHandleList);
|
SHELL_FREE_NON_NULL (ErrorType);
|
||||||
}
|
|
||||||
|
|
||||||
return (Status2);
|
return (Status2);
|
||||||
}
|
}
|
||||||
@ -359,9 +367,10 @@ ShellCommandRunDrvDiag (
|
|||||||
EFI_HANDLE Handle3;
|
EFI_HANDLE Handle3;
|
||||||
UINT64 Intermediate;
|
UINT64 Intermediate;
|
||||||
|
|
||||||
ShellStatus = SHELL_SUCCESS;
|
Intermediate = 0;
|
||||||
Mode = TestModeMax;
|
ShellStatus = SHELL_SUCCESS;
|
||||||
Language = NULL;
|
Mode = TestModeMax;
|
||||||
|
Language = NULL;
|
||||||
|
|
||||||
//
|
//
|
||||||
// initialize the shell lib (we must be in non-auto-init...)
|
// initialize the shell lib (we must be in non-auto-init...)
|
||||||
@ -431,6 +440,12 @@ ShellCommandRunDrvDiag (
|
|||||||
return (SHELL_INVALID_PARAMETER);
|
return (SHELL_INVALID_PARAMETER);
|
||||||
} else if (Lang != NULL) {
|
} else if (Lang != NULL) {
|
||||||
Language = AllocateZeroPool (StrSize (Lang));
|
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);
|
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_SUCCESS The operation was successful.
|
||||||
@retval EFI_INVALID_PARAMETER TheHandle was NULL.
|
@retval EFI_INVALID_PARAMETER TheHandle was NULL.
|
||||||
|
@retval EFI_OUT_OF_RESOURCES A memory allocation failed.
|
||||||
**/
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
TraverseHandleDatabase (
|
TraverseHandleDatabase (
|
||||||
@ -102,10 +103,16 @@ TraverseHandleDatabase (
|
|||||||
break;
|
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);
|
Name = GetStringNameFromHandle (OpenInfo[OpenInfoIndex].AgentHandle, NULL);
|
||||||
ControllerIndex = ConvertHandleToHandleIndex (OpenInfo[OpenInfoIndex].ControllerHandle);
|
ControllerIndex = ConvertHandleToHandleIndex (OpenInfo[OpenInfoIndex].ControllerHandle);
|
||||||
if (ControllerIndex != 0) {
|
if ((ControllerIndex != 0) && (Name != NULL)) {
|
||||||
ShellPrintHiiEx (
|
ShellPrintHiiEx (
|
||||||
-1,
|
-1,
|
||||||
-1,
|
-1,
|
||||||
@ -118,7 +125,7 @@ TraverseHandleDatabase (
|
|||||||
OpenTypeString,
|
OpenTypeString,
|
||||||
Name
|
Name
|
||||||
);
|
);
|
||||||
} else {
|
} else if (Name != NULL) {
|
||||||
ShellPrintHiiEx (
|
ShellPrintHiiEx (
|
||||||
-1,
|
-1,
|
||||||
-1,
|
-1,
|
||||||
@ -199,13 +206,21 @@ ShellCommandRunOpenInfo (
|
|||||||
ShellStatus = SHELL_INVALID_PARAMETER;
|
ShellStatus = SHELL_INVALID_PARAMETER;
|
||||||
} else {
|
} else {
|
||||||
Param1 = ShellCommandLineGetRawValue (Package, 1);
|
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)) {
|
if (EFI_ERROR (Status) || (Param1 == NULL) || (ConvertHandleIndexToHandle ((UINTN)Intermediate) == NULL)) {
|
||||||
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_INV_HANDLE), gShellDriver1HiiHandle, L"openinfo", Param1);
|
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_INV_HANDLE), gShellDriver1HiiHandle, L"openinfo", Param1);
|
||||||
ShellStatus = SHELL_INVALID_PARAMETER;
|
ShellStatus = SHELL_INVALID_PARAMETER;
|
||||||
} else {
|
} else {
|
||||||
TheHandle = ConvertHandleIndexToHandle ((UINTN)Intermediate);
|
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);
|
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_OPENINFO_HEADER_LINE), gShellDriver1HiiHandle, (UINTN)Intermediate, TheHandle);
|
||||||
|
|
||||||
Status = TraverseHandleDatabase (TheHandle);
|
Status = TraverseHandleDatabase (TheHandle);
|
||||||
|
@ -25,6 +25,9 @@ DumpLoadedImageProtocolInfo (
|
|||||||
CHAR16 *TheString;
|
CHAR16 *TheString;
|
||||||
|
|
||||||
TheString = GetProtocolInformationDump (TheHandle, &gEfiLoadedImageProtocolGuid, TRUE);
|
TheString = GetProtocolInformationDump (TheHandle, &gEfiLoadedImageProtocolGuid, TRUE);
|
||||||
|
if (TheString == NULL) {
|
||||||
|
return (EFI_INVALID_PARAMETER);
|
||||||
|
}
|
||||||
|
|
||||||
ShellPrintEx (-1, -1, L"%s", TheString);
|
ShellPrintEx (-1, -1, L"%s", TheString);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user