mirror of https://github.com/acidanthera/audk.git
ShellPkg: Verify memory allocations without ASSERT.
signed-off-by: jcarsey reviewed-by: geekboy15a git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12522 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
091bb7138b
commit
beab0fc5e2
|
@ -96,78 +96,25 @@ ShellCommandRunCd (
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Param1Copy = CatSPrint(NULL, L"%s", Param1, NULL);
|
Param1Copy = CatSPrint(NULL, L"%s", Param1, NULL);
|
||||||
Param1Copy = PathCleanUpDirectories(Param1Copy);
|
if (Param1Copy != NULL) {
|
||||||
if (StrCmp(Param1Copy, L".") == 0) {
|
Param1Copy = PathCleanUpDirectories(Param1Copy);
|
||||||
//
|
}
|
||||||
// nothing to do... change to current directory
|
if (Param1Copy != NULL) {
|
||||||
//
|
if (StrCmp(Param1Copy, L".") == 0) {
|
||||||
} else if (StrCmp(Param1Copy, L"..") == 0) {
|
|
||||||
//
|
|
||||||
// Change up one directory...
|
|
||||||
//
|
|
||||||
Directory = ShellGetCurrentDir(NULL);
|
|
||||||
if (Directory == NULL) {
|
|
||||||
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_CWD), gShellLevel2HiiHandle);
|
|
||||||
ShellStatus = SHELL_NOT_FOUND;
|
|
||||||
} else {
|
|
||||||
Drive = GetFullyQualifiedPath(Directory);
|
|
||||||
PathRemoveLastItem(Drive);
|
|
||||||
}
|
|
||||||
if (ShellStatus == SHELL_SUCCESS && Drive != NULL) {
|
|
||||||
//
|
//
|
||||||
// change directory on current drive letter
|
// nothing to do... change to current directory
|
||||||
//
|
//
|
||||||
Status = gEfiShellProtocol->SetCurDir(NULL, Drive);
|
} else if (StrCmp(Param1Copy, L"..") == 0) {
|
||||||
if (Status == EFI_NOT_FOUND) {
|
//
|
||||||
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_CD_NF), gShellLevel2HiiHandle);
|
// Change up one directory...
|
||||||
|
//
|
||||||
|
Directory = ShellGetCurrentDir(NULL);
|
||||||
|
if (Directory == NULL) {
|
||||||
|
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_CWD), gShellLevel2HiiHandle);
|
||||||
ShellStatus = SHELL_NOT_FOUND;
|
ShellStatus = SHELL_NOT_FOUND;
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (StrCmp(Param1Copy, L"\\") == 0) {
|
|
||||||
//
|
|
||||||
// Move to root of current drive
|
|
||||||
//
|
|
||||||
Directory = ShellGetCurrentDir(NULL);
|
|
||||||
if (Directory == NULL) {
|
|
||||||
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_CWD), gShellLevel2HiiHandle);
|
|
||||||
ShellStatus = SHELL_NOT_FOUND;
|
|
||||||
} else {
|
|
||||||
Drive = GetFullyQualifiedPath(Directory);
|
|
||||||
while (PathRemoveLastItem(Drive)) ;
|
|
||||||
}
|
|
||||||
if (ShellStatus == SHELL_SUCCESS && Drive != NULL) {
|
|
||||||
//
|
|
||||||
// change directory on current drive letter
|
|
||||||
//
|
|
||||||
Status = gEfiShellProtocol->SetCurDir(NULL, Drive);
|
|
||||||
if (Status == EFI_NOT_FOUND) {
|
|
||||||
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_CD_NF), gShellLevel2HiiHandle);
|
|
||||||
ShellStatus = SHELL_NOT_FOUND;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (StrStr(Param1Copy, L":") == NULL) {
|
|
||||||
if (ShellGetCurrentDir(NULL) == NULL) {
|
|
||||||
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_CWD), gShellLevel2HiiHandle);
|
|
||||||
ShellStatus = SHELL_NOT_FOUND;
|
|
||||||
} else {
|
|
||||||
ASSERT((Drive == NULL && DriveSize == 0) || (Drive != NULL));
|
|
||||||
Drive = StrnCatGrow(&Drive, &DriveSize, ShellGetCurrentDir(NULL), 0);
|
|
||||||
if (*Param1Copy == L'\\') {
|
|
||||||
while (PathRemoveLastItem(Drive)) ;
|
|
||||||
Drive = StrnCatGrow(&Drive, &DriveSize, Param1Copy+1, 0);
|
|
||||||
} else {
|
} else {
|
||||||
Drive = StrnCatGrow(&Drive, &DriveSize, Param1Copy, 0);
|
Drive = GetFullyQualifiedPath(Directory);
|
||||||
}
|
PathRemoveLastItem(Drive);
|
||||||
//
|
|
||||||
// Verify that this is a valid directory
|
|
||||||
//
|
|
||||||
Status = gEfiShellProtocol->OpenFileByName(Drive, &Handle, EFI_FILE_MODE_READ);
|
|
||||||
if (EFI_ERROR(Status)) {
|
|
||||||
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_DIR_NF), gShellLevel2HiiHandle, Drive);
|
|
||||||
ShellStatus = SHELL_NOT_FOUND;
|
|
||||||
} else if (EFI_ERROR(FileHandleIsDirectory(Handle))) {
|
|
||||||
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NOT_DIR), gShellLevel2HiiHandle, Drive);
|
|
||||||
ShellStatus = SHELL_NOT_FOUND;
|
|
||||||
}
|
}
|
||||||
if (ShellStatus == SHELL_SUCCESS && Drive != NULL) {
|
if (ShellStatus == SHELL_SUCCESS && Drive != NULL) {
|
||||||
//
|
//
|
||||||
|
@ -179,42 +126,99 @@ ShellCommandRunCd (
|
||||||
ShellStatus = SHELL_NOT_FOUND;
|
ShellStatus = SHELL_NOT_FOUND;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (Handle != NULL) {
|
} else if (StrCmp(Param1Copy, L"\\") == 0) {
|
||||||
gEfiShellProtocol->CloseFile(Handle);
|
//
|
||||||
DEBUG_CODE(Handle = NULL;);
|
// Move to root of current drive
|
||||||
}
|
//
|
||||||
}
|
Directory = ShellGetCurrentDir(NULL);
|
||||||
} else {
|
if (Directory == NULL) {
|
||||||
//
|
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_CWD), gShellLevel2HiiHandle);
|
||||||
// change directory on other drive letter
|
|
||||||
//
|
|
||||||
Drive = AllocateZeroPool(StrSize(Param1Copy));
|
|
||||||
if (Drive == NULL) {
|
|
||||||
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_MEM), gShellLevel2HiiHandle);
|
|
||||||
ShellStatus = SHELL_OUT_OF_RESOURCES;
|
|
||||||
} else {
|
|
||||||
Drive = StrCpy(Drive, Param1Copy);
|
|
||||||
Path = StrStr(Drive, L":");
|
|
||||||
ASSERT(Path != NULL);
|
|
||||||
if (*(Path+1) == CHAR_NULL) {
|
|
||||||
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_CD_NF), gShellLevel2HiiHandle);
|
|
||||||
ShellStatus = SHELL_NOT_FOUND;
|
ShellStatus = SHELL_NOT_FOUND;
|
||||||
} else {
|
} else {
|
||||||
*(Path+1) = CHAR_NULL;
|
Drive = GetFullyQualifiedPath(Directory);
|
||||||
if (Path == Drive + StrLen(Drive)) {
|
while (PathRemoveLastItem(Drive)) ;
|
||||||
|
}
|
||||||
|
if (ShellStatus == SHELL_SUCCESS && Drive != NULL) {
|
||||||
|
//
|
||||||
|
// change directory on current drive letter
|
||||||
|
//
|
||||||
|
Status = gEfiShellProtocol->SetCurDir(NULL, Drive);
|
||||||
|
if (Status == EFI_NOT_FOUND) {
|
||||||
|
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_CD_NF), gShellLevel2HiiHandle);
|
||||||
|
ShellStatus = SHELL_NOT_FOUND;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (StrStr(Param1Copy, L":") == NULL) {
|
||||||
|
if (ShellGetCurrentDir(NULL) == NULL) {
|
||||||
|
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_CWD), gShellLevel2HiiHandle);
|
||||||
|
ShellStatus = SHELL_NOT_FOUND;
|
||||||
|
} else {
|
||||||
|
ASSERT((Drive == NULL && DriveSize == 0) || (Drive != NULL));
|
||||||
|
Drive = StrnCatGrow(&Drive, &DriveSize, ShellGetCurrentDir(NULL), 0);
|
||||||
|
if (*Param1Copy == L'\\') {
|
||||||
|
while (PathRemoveLastItem(Drive)) ;
|
||||||
|
Drive = StrnCatGrow(&Drive, &DriveSize, Param1Copy+1, 0);
|
||||||
|
} else {
|
||||||
|
Drive = StrnCatGrow(&Drive, &DriveSize, Param1Copy, 0);
|
||||||
|
}
|
||||||
|
//
|
||||||
|
// Verify that this is a valid directory
|
||||||
|
//
|
||||||
|
Status = gEfiShellProtocol->OpenFileByName(Drive, &Handle, EFI_FILE_MODE_READ);
|
||||||
|
if (EFI_ERROR(Status)) {
|
||||||
|
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_DIR_NF), gShellLevel2HiiHandle, Drive);
|
||||||
|
ShellStatus = SHELL_NOT_FOUND;
|
||||||
|
} else if (EFI_ERROR(FileHandleIsDirectory(Handle))) {
|
||||||
|
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NOT_DIR), gShellLevel2HiiHandle, Drive);
|
||||||
|
ShellStatus = SHELL_NOT_FOUND;
|
||||||
|
}
|
||||||
|
if (ShellStatus == SHELL_SUCCESS && Drive != NULL) {
|
||||||
|
//
|
||||||
|
// change directory on current drive letter
|
||||||
|
//
|
||||||
|
Status = gEfiShellProtocol->SetCurDir(NULL, Drive);
|
||||||
|
if (Status == EFI_NOT_FOUND) {
|
||||||
|
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_CD_NF), gShellLevel2HiiHandle);
|
||||||
|
ShellStatus = SHELL_NOT_FOUND;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (Handle != NULL) {
|
||||||
|
gEfiShellProtocol->CloseFile(Handle);
|
||||||
|
DEBUG_CODE(Handle = NULL;);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
//
|
||||||
|
// change directory on other drive letter
|
||||||
|
//
|
||||||
|
Drive = AllocateZeroPool(StrSize(Param1Copy));
|
||||||
|
if (Drive == NULL) {
|
||||||
|
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_MEM), gShellLevel2HiiHandle);
|
||||||
|
ShellStatus = SHELL_OUT_OF_RESOURCES;
|
||||||
|
} else {
|
||||||
|
Drive = StrCpy(Drive, Param1Copy);
|
||||||
|
Path = StrStr(Drive, L":");
|
||||||
|
ASSERT(Path != NULL);
|
||||||
|
if (*(Path+1) == CHAR_NULL) {
|
||||||
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_CD_NF), gShellLevel2HiiHandle);
|
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_CD_NF), gShellLevel2HiiHandle);
|
||||||
ShellStatus = SHELL_NOT_FOUND;
|
ShellStatus = SHELL_NOT_FOUND;
|
||||||
} else {
|
} else {
|
||||||
Status = gEfiShellProtocol->SetCurDir(Drive, Path+2);
|
*(Path+1) = CHAR_NULL;
|
||||||
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_CD_PRINT), gShellLevel2HiiHandle, ShellGetCurrentDir(Drive));
|
if (Path == Drive + StrLen(Drive)) {
|
||||||
|
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_CD_NF), gShellLevel2HiiHandle);
|
||||||
|
ShellStatus = SHELL_NOT_FOUND;
|
||||||
|
} else {
|
||||||
|
Status = gEfiShellProtocol->SetCurDir(Drive, Path+2);
|
||||||
|
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_CD_PRINT), gShellLevel2HiiHandle, ShellGetCurrentDir(Drive));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (Status == EFI_NOT_FOUND) {
|
||||||
|
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_CD_NF), gShellLevel2HiiHandle);
|
||||||
|
Status = SHELL_NOT_FOUND;
|
||||||
|
} else if (EFI_ERROR(Status)) {
|
||||||
|
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_DIR_NF), gShellLevel2HiiHandle, Param1Copy);
|
||||||
|
Status = SHELL_NOT_FOUND;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (Status == EFI_NOT_FOUND) {
|
|
||||||
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_CD_NF), gShellLevel2HiiHandle);
|
|
||||||
Status = SHELL_NOT_FOUND;
|
|
||||||
} else if (EFI_ERROR(Status)) {
|
|
||||||
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_DIR_NF), gShellLevel2HiiHandle, Param1Copy);
|
|
||||||
Status = SHELL_NOT_FOUND;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -120,9 +120,10 @@ IsValidMove(
|
||||||
@param[in, out] DestPathPointer A pointer to the callee allocated final path.
|
@param[in, out] DestPathPointer A pointer to the callee allocated final path.
|
||||||
@param[in] Cwd A pointer to the current working directory.
|
@param[in] Cwd A pointer to the current working directory.
|
||||||
|
|
||||||
@retval EFI_INVALID_PARAMETR The DestDir could not be resolved to a location.
|
@retval SHELL_INVALID_PARAMETER The DestDir could not be resolved to a location.
|
||||||
@retval EFI_INVALID_PARAMETR The DestDir could be resolved to more than 1 location.
|
@retval SHELL_INVALID_PARAMETER The DestDir could be resolved to more than 1 location.
|
||||||
@retval EFI_SUCCESS The operation was sucessful.
|
@retval SHELL_INVALID_PARAMETER Cwd is required and is NULL.
|
||||||
|
@retval SHELL_SUCCESS The operation was sucessful.
|
||||||
**/
|
**/
|
||||||
SHELL_STATUS
|
SHELL_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
|
@ -143,6 +144,9 @@ GetDestinationLocation(
|
||||||
DestPath = NULL;
|
DestPath = NULL;
|
||||||
|
|
||||||
if (StrStr(DestDir, L"\\") == DestDir) {
|
if (StrStr(DestDir, L"\\") == DestDir) {
|
||||||
|
if (Cwd == NULL) {
|
||||||
|
return SHELL_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
DestPath = AllocateZeroPool(StrSize(Cwd));
|
DestPath = AllocateZeroPool(StrSize(Cwd));
|
||||||
if (DestPath == NULL) {
|
if (DestPath == NULL) {
|
||||||
return (SHELL_OUT_OF_RESOURCES);
|
return (SHELL_OUT_OF_RESOURCES);
|
||||||
|
@ -161,6 +165,10 @@ GetDestinationLocation(
|
||||||
// Not existing... must be renaming
|
// Not existing... must be renaming
|
||||||
//
|
//
|
||||||
if ((TempLocation = StrStr(DestDir, L":")) == NULL) {
|
if ((TempLocation = StrStr(DestDir, L":")) == NULL) {
|
||||||
|
if (Cwd == NULL) {
|
||||||
|
ShellCloseFileMetaArg(&DestList);
|
||||||
|
return (SHELL_INVALID_PARAMETER);
|
||||||
|
}
|
||||||
NewSize = StrSize(Cwd);
|
NewSize = StrSize(Cwd);
|
||||||
NewSize += StrSize(DestDir);
|
NewSize += StrSize(DestDir);
|
||||||
DestPath = AllocateZeroPool(NewSize);
|
DestPath = AllocateZeroPool(NewSize);
|
||||||
|
|
|
@ -179,6 +179,7 @@ ShellCommandRunDate (
|
||||||
EFI_TIME TheTime;
|
EFI_TIME TheTime;
|
||||||
CHAR16 *ProblemParam;
|
CHAR16 *ProblemParam;
|
||||||
SHELL_STATUS ShellStatus;
|
SHELL_STATUS ShellStatus;
|
||||||
|
CONST CHAR16 *Param1;
|
||||||
|
|
||||||
ShellStatus = SHELL_SUCCESS;
|
ShellStatus = SHELL_SUCCESS;
|
||||||
ProblemParam = NULL;
|
ProblemParam = NULL;
|
||||||
|
@ -238,9 +239,14 @@ ShellCommandRunDate (
|
||||||
//
|
//
|
||||||
// perform level 3 operation here.
|
// perform level 3 operation here.
|
||||||
//
|
//
|
||||||
ShellStatus = CheckAndSetDate(ShellCommandLineGetRawValue(Package, 1));
|
Param1 = ShellCommandLineGetRawValue(Package, 1);
|
||||||
|
if (Param1 == NULL) {
|
||||||
|
ShellStatus = SHELL_INVALID_PARAMETER;
|
||||||
|
} else {
|
||||||
|
ShellStatus = CheckAndSetDate(Param1);
|
||||||
|
}
|
||||||
if (ShellStatus != SHELL_SUCCESS) {
|
if (ShellStatus != SHELL_SUCCESS) {
|
||||||
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel2HiiHandle, ShellCommandLineGetRawValue(Package, 1));
|
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel2HiiHandle, Param1);
|
||||||
ShellStatus = SHELL_INVALID_PARAMETER;
|
ShellStatus = SHELL_INVALID_PARAMETER;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -84,6 +84,8 @@ ShellIsDecimalDigitCharacter (
|
||||||
Helper function to find ShellEnvironment2 for constructor.
|
Helper function to find ShellEnvironment2 for constructor.
|
||||||
|
|
||||||
@param[in] ImageHandle A copy of the calling image's handle.
|
@param[in] ImageHandle A copy of the calling image's handle.
|
||||||
|
|
||||||
|
@retval EFI_OUT_OF_RESOURCES Memory allocation failed.
|
||||||
**/
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
|
@ -123,7 +125,9 @@ ShellFindSE2 (
|
||||||
//
|
//
|
||||||
if (Status == EFI_BUFFER_TOO_SMALL) {
|
if (Status == EFI_BUFFER_TOO_SMALL) {
|
||||||
Buffer = (EFI_HANDLE*)AllocateZeroPool(BufferSize);
|
Buffer = (EFI_HANDLE*)AllocateZeroPool(BufferSize);
|
||||||
ASSERT(Buffer != NULL);
|
if (Buffer == NULL) {
|
||||||
|
return (EFI_OUT_OF_RESOURCES);
|
||||||
|
}
|
||||||
Status = gBS->LocateHandle (ByProtocol,
|
Status = gBS->LocateHandle (ByProtocol,
|
||||||
&gEfiShellEnvironment2Guid,
|
&gEfiShellEnvironment2Guid,
|
||||||
NULL, // ignored for ByProtocol
|
NULL, // ignored for ByProtocol
|
||||||
|
@ -1360,8 +1364,9 @@ InternalShellConvertFileListType (
|
||||||
// allocate a new EFI_SHELL_FILE_INFO object
|
// allocate a new EFI_SHELL_FILE_INFO object
|
||||||
//
|
//
|
||||||
NewInfo = AllocateZeroPool(sizeof(EFI_SHELL_FILE_INFO));
|
NewInfo = AllocateZeroPool(sizeof(EFI_SHELL_FILE_INFO));
|
||||||
ASSERT(NewInfo != NULL);
|
|
||||||
if (NewInfo == NULL) {
|
if (NewInfo == NULL) {
|
||||||
|
ShellCloseFileMetaArg(&(EFI_SHELL_FILE_INFO*)ListHead);
|
||||||
|
ListHead = NULL;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1384,9 +1389,11 @@ InternalShellConvertFileListType (
|
||||||
//
|
//
|
||||||
// make sure all the memory allocations were sucessful
|
// make sure all the memory allocations were sucessful
|
||||||
//
|
//
|
||||||
ASSERT(NewInfo->FullName != NULL);
|
if (NULL == NewInfo->FullName || NewInfo->FileName == NULL || NewInfo->Info == NULL) {
|
||||||
ASSERT(NewInfo->FileName != NULL);
|
ShellCloseFileMetaArg(&(EFI_SHELL_FILE_INFO*)ListHead);
|
||||||
ASSERT(NewInfo->Info != NULL);
|
ListHead = NULL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Copt the strings and structure
|
// Copt the strings and structure
|
||||||
|
@ -1612,7 +1619,6 @@ ShellFindFilePath (
|
||||||
Size = StrSize(Path);
|
Size = StrSize(Path);
|
||||||
Size += StrSize(FileName);
|
Size += StrSize(FileName);
|
||||||
TestPath = AllocateZeroPool(Size);
|
TestPath = AllocateZeroPool(Size);
|
||||||
ASSERT(TestPath != NULL);
|
|
||||||
if (TestPath == NULL) {
|
if (TestPath == NULL) {
|
||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
|
@ -1719,7 +1725,6 @@ ShellFindFilePathEx (
|
||||||
Size = StrSize(FileName);
|
Size = StrSize(FileName);
|
||||||
Size += StrSize(FileExtension);
|
Size += StrSize(FileExtension);
|
||||||
TestPath = AllocateZeroPool(Size);
|
TestPath = AllocateZeroPool(Size);
|
||||||
ASSERT(TestPath != NULL);
|
|
||||||
if (TestPath == NULL) {
|
if (TestPath == NULL) {
|
||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
|
@ -1934,8 +1939,9 @@ InternalCommandLineParse (
|
||||||
//
|
//
|
||||||
*CheckPackage = (LIST_ENTRY*)AllocateZeroPool(sizeof(LIST_ENTRY));
|
*CheckPackage = (LIST_ENTRY*)AllocateZeroPool(sizeof(LIST_ENTRY));
|
||||||
if (*CheckPackage == NULL) {
|
if (*CheckPackage == NULL) {
|
||||||
return EFI_OUT_OF_RESOURCES;
|
return (EFI_OUT_OF_RESOURCES);
|
||||||
}
|
}
|
||||||
|
|
||||||
InitializeListHead(*CheckPackage);
|
InitializeListHead(*CheckPackage);
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -1958,9 +1964,17 @@ InternalCommandLineParse (
|
||||||
// this is a flag
|
// this is a flag
|
||||||
//
|
//
|
||||||
CurrentItemPackage = AllocateZeroPool(sizeof(SHELL_PARAM_PACKAGE));
|
CurrentItemPackage = AllocateZeroPool(sizeof(SHELL_PARAM_PACKAGE));
|
||||||
ASSERT(CurrentItemPackage != NULL);
|
if (CurrentItemPackage == NULL) {
|
||||||
|
ShellCommandLineFreeVarList(*CheckPackage);
|
||||||
|
*CheckPackage = NULL;
|
||||||
|
return (EFI_OUT_OF_RESOURCES);
|
||||||
|
}
|
||||||
CurrentItemPackage->Name = AllocateZeroPool(StrSize(Argv[LoopCounter]));
|
CurrentItemPackage->Name = AllocateZeroPool(StrSize(Argv[LoopCounter]));
|
||||||
ASSERT(CurrentItemPackage->Name != NULL);
|
if (CurrentItemPackage->Name == NULL) {
|
||||||
|
ShellCommandLineFreeVarList(*CheckPackage);
|
||||||
|
*CheckPackage = NULL;
|
||||||
|
return (EFI_OUT_OF_RESOURCES);
|
||||||
|
}
|
||||||
StrCpy(CurrentItemPackage->Name, Argv[LoopCounter]);
|
StrCpy(CurrentItemPackage->Name, Argv[LoopCounter]);
|
||||||
CurrentItemPackage->Type = CurrentItemType;
|
CurrentItemPackage->Type = CurrentItemType;
|
||||||
CurrentItemPackage->OriginalPosition = (UINTN)(-1);
|
CurrentItemPackage->OriginalPosition = (UINTN)(-1);
|
||||||
|
@ -2024,11 +2038,19 @@ InternalCommandLineParse (
|
||||||
TempPointer++;
|
TempPointer++;
|
||||||
}
|
}
|
||||||
CurrentItemPackage = AllocateZeroPool(sizeof(SHELL_PARAM_PACKAGE));
|
CurrentItemPackage = AllocateZeroPool(sizeof(SHELL_PARAM_PACKAGE));
|
||||||
ASSERT(CurrentItemPackage != NULL);
|
if (CurrentItemPackage == NULL) {
|
||||||
|
ShellCommandLineFreeVarList(*CheckPackage);
|
||||||
|
*CheckPackage = NULL;
|
||||||
|
return (EFI_OUT_OF_RESOURCES);
|
||||||
|
}
|
||||||
CurrentItemPackage->Name = NULL;
|
CurrentItemPackage->Name = NULL;
|
||||||
CurrentItemPackage->Type = TypePosition;
|
CurrentItemPackage->Type = TypePosition;
|
||||||
CurrentItemPackage->Value = AllocateZeroPool(StrSize(TempPointer));
|
CurrentItemPackage->Value = AllocateZeroPool(StrSize(TempPointer));
|
||||||
ASSERT(CurrentItemPackage->Value != NULL);
|
if (CurrentItemPackage->Value == NULL) {
|
||||||
|
ShellCommandLineFreeVarList(*CheckPackage);
|
||||||
|
*CheckPackage = NULL;
|
||||||
|
return (EFI_OUT_OF_RESOURCES);
|
||||||
|
}
|
||||||
StrCpy(CurrentItemPackage->Value, TempPointer);
|
StrCpy(CurrentItemPackage->Value, TempPointer);
|
||||||
CurrentItemPackage->OriginalPosition = Count++;
|
CurrentItemPackage->OriginalPosition = Count++;
|
||||||
InsertHeadList(*CheckPackage, &CurrentItemPackage->Link);
|
InsertHeadList(*CheckPackage, &CurrentItemPackage->Link);
|
||||||
|
@ -2038,8 +2060,9 @@ InternalCommandLineParse (
|
||||||
//
|
//
|
||||||
if (ProblemParam != NULL) {
|
if (ProblemParam != NULL) {
|
||||||
*ProblemParam = AllocateZeroPool(StrSize(Argv[LoopCounter]));
|
*ProblemParam = AllocateZeroPool(StrSize(Argv[LoopCounter]));
|
||||||
ASSERT(*ProblemParam != NULL);
|
if (*ProblemParam != NULL) {
|
||||||
StrCpy(*ProblemParam, Argv[LoopCounter]);
|
StrCpy(*ProblemParam, Argv[LoopCounter]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
ShellCommandLineFreeVarList(*CheckPackage);
|
ShellCommandLineFreeVarList(*CheckPackage);
|
||||||
*CheckPackage = NULL;
|
*CheckPackage = NULL;
|
||||||
|
@ -2504,7 +2527,9 @@ ShellCopySearchAndReplace(
|
||||||
Replace = StrnCatGrow(&Replace, NULL, ReplaceWith, 0);
|
Replace = StrnCatGrow(&Replace, NULL, ReplaceWith, 0);
|
||||||
} else {
|
} else {
|
||||||
Replace = AllocateZeroPool(StrSize(ReplaceWith) + 2*sizeof(CHAR16));
|
Replace = AllocateZeroPool(StrSize(ReplaceWith) + 2*sizeof(CHAR16));
|
||||||
UnicodeSPrint(Replace, StrSize(ReplaceWith) + 2*sizeof(CHAR16), L"\"%s\"", ReplaceWith);
|
if (Replace != NULL) {
|
||||||
|
UnicodeSPrint(Replace, StrSize(ReplaceWith) + 2*sizeof(CHAR16), L"\"%s\"", ReplaceWith);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (Replace == NULL) {
|
if (Replace == NULL) {
|
||||||
return (EFI_OUT_OF_RESOURCES);
|
return (EFI_OUT_OF_RESOURCES);
|
||||||
|
@ -3092,11 +3117,9 @@ StrnCatGrow (
|
||||||
NewSize += 2 * Count * sizeof(CHAR16);
|
NewSize += 2 * Count * sizeof(CHAR16);
|
||||||
}
|
}
|
||||||
*Destination = ReallocatePool(*CurrentSize, NewSize, *Destination);
|
*Destination = ReallocatePool(*CurrentSize, NewSize, *Destination);
|
||||||
ASSERT(*Destination != NULL);
|
|
||||||
*CurrentSize = NewSize;
|
*CurrentSize = NewSize;
|
||||||
} else {
|
} else {
|
||||||
*Destination = AllocateZeroPool((Count+1)*sizeof(CHAR16));
|
*Destination = AllocateZeroPool((Count+1)*sizeof(CHAR16));
|
||||||
ASSERT(*Destination != NULL);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -3831,7 +3854,8 @@ ShellIsHexOrDecimalNumber (
|
||||||
@param[in, out] Ascii Boolean value for indicating whether the file is
|
@param[in, out] Ascii Boolean value for indicating whether the file is
|
||||||
Ascii (TRUE) or UCS2 (FALSE).
|
Ascii (TRUE) or UCS2 (FALSE).
|
||||||
|
|
||||||
@return The line of text from the file.
|
@return The line of text from the file.
|
||||||
|
@retval NULL There was not enough memory available.
|
||||||
|
|
||||||
@sa ShellFileHandleReadLine
|
@sa ShellFileHandleReadLine
|
||||||
**/
|
**/
|
||||||
|
@ -3852,9 +3876,12 @@ ShellFileHandleReturnLine(
|
||||||
Status = ShellFileHandleReadLine(Handle, RetVal, &Size, FALSE, Ascii);
|
Status = ShellFileHandleReadLine(Handle, RetVal, &Size, FALSE, Ascii);
|
||||||
if (Status == EFI_BUFFER_TOO_SMALL) {
|
if (Status == EFI_BUFFER_TOO_SMALL) {
|
||||||
RetVal = AllocateZeroPool(Size);
|
RetVal = AllocateZeroPool(Size);
|
||||||
|
if (RetVal == NULL) {
|
||||||
|
return (NULL);
|
||||||
|
}
|
||||||
Status = ShellFileHandleReadLine(Handle, RetVal, &Size, FALSE, Ascii);
|
Status = ShellFileHandleReadLine(Handle, RetVal, &Size, FALSE, Ascii);
|
||||||
|
|
||||||
}
|
}
|
||||||
ASSERT_EFI_ERROR(Status);
|
|
||||||
if (EFI_ERROR(Status) && (RetVal != NULL)) {
|
if (EFI_ERROR(Status) && (RetVal != NULL)) {
|
||||||
FreePool(RetVal);
|
FreePool(RetVal);
|
||||||
RetVal = NULL;
|
RetVal = NULL;
|
||||||
|
|
Loading…
Reference in New Issue