From 3e082d58262da4108a3f1f2ee8fa0a9441bb2a9b Mon Sep 17 00:00:00 2001 From: jcarsey Date: Mon, 4 Oct 2010 16:44:57 +0000 Subject: Verify more memory allocations. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10910 6f19259b-4bc3-4df7-8a09-765794883524 --- ShellPkg/Library/UefiShellLevel2CommandsLib/Cp.c | 2 +- ShellPkg/Library/UefiShellLevel2CommandsLib/Map.c | 17 ++++++++++++++--- ShellPkg/Library/UefiShellLevel2CommandsLib/Mv.c | 11 ++++++++--- 3 files changed, 23 insertions(+), 7 deletions(-) (limited to 'ShellPkg/Library/UefiShellLevel2CommandsLib') diff --git a/ShellPkg/Library/UefiShellLevel2CommandsLib/Cp.c b/ShellPkg/Library/UefiShellLevel2CommandsLib/Cp.c index 9344c331e5..f15ff3030a 100644 --- a/ShellPkg/Library/UefiShellLevel2CommandsLib/Cp.c +++ b/ShellPkg/Library/UefiShellLevel2CommandsLib/Cp.c @@ -287,7 +287,7 @@ ValidateAndCopyFiles( HiiResultOk = HiiGetString (gShellLevel2HiiHandle, STRING_TOKEN (STR_GEN_RES_OK), NULL); DestPath = AllocatePool(PathLen); - if (HiiOutput == NULL || HiiOutput == NULL || HiiResultOk == NULL) { + if (DestPath == NULL || HiiOutput == NULL || HiiResultOk == NULL) { SHELL_FREE_NON_NULL(DestPath); SHELL_FREE_NON_NULL(HiiOutput); SHELL_FREE_NON_NULL(HiiResultOk); diff --git a/ShellPkg/Library/UefiShellLevel2CommandsLib/Map.c b/ShellPkg/Library/UefiShellLevel2CommandsLib/Map.c index f696523f82..ccfa0b0654 100644 --- a/ShellPkg/Library/UefiShellLevel2CommandsLib/Map.c +++ b/ShellPkg/Library/UefiShellLevel2CommandsLib/Map.c @@ -664,6 +664,9 @@ PerformMappingDelete( HandleBuffer); if (Status == EFI_BUFFER_TOO_SMALL) { HandleBuffer = AllocatePool(BufferSize); + if (HandleBuffer == NULL) { + return (EFI_OUT_OF_RESOURCES); + } Status = gBS->LocateHandle( ByProtocol, &gEfiDevicePathProtocolGuid, @@ -671,8 +674,10 @@ PerformMappingDelete( &BufferSize, HandleBuffer); } - ASSERT_EFI_ERROR(Status); - ASSERT(HandleBuffer != NULL); + if (EFI_ERROR(Status)) { + SHELL_FREE_NON_NULL(HandleBuffer); + return (Status); + } // // Get the map name(s) for each one. @@ -698,6 +703,9 @@ PerformMappingDelete( if (Status == EFI_BUFFER_TOO_SMALL) { FreePool(HandleBuffer); HandleBuffer = AllocatePool(BufferSize); + if (HandleBuffer == NULL) { + return (EFI_OUT_OF_RESOURCES); + } Status = gBS->LocateHandle( ByProtocol, &gEfiBlockIoProtocolGuid, @@ -705,7 +713,10 @@ PerformMappingDelete( &BufferSize, HandleBuffer); } - ASSERT_EFI_ERROR(Status); + if (EFI_ERROR(Status)) { + SHELL_FREE_NON_NULL(HandleBuffer); + return (Status); + } // // Get the map name(s) for each one. diff --git a/ShellPkg/Library/UefiShellLevel2CommandsLib/Mv.c b/ShellPkg/Library/UefiShellLevel2CommandsLib/Mv.c index a628781757..7530289a52 100644 --- a/ShellPkg/Library/UefiShellLevel2CommandsLib/Mv.c +++ b/ShellPkg/Library/UefiShellLevel2CommandsLib/Mv.c @@ -44,7 +44,7 @@ IsValidMove( CHAR16 *Test; CHAR16 *Test1; CHAR16 *TestWalker; - UINTN Result; + INTN Result; UINTN TempLen; if (Cwd != NULL && StrCmp(FullName, Cwd) == 0) { // @@ -236,6 +236,7 @@ ValidateAndMoveFiles( EFI_FILE_INFO *NewFileInfo; CHAR16 *TempLocation; UINTN NewSize; + UINTN Length; ASSERT(FileList != NULL); ASSERT(DestDir != NULL); @@ -310,12 +311,16 @@ ValidateAndMoveFiles( } else { StrCpy(NewFileInfo->FileName, DestPath); } - if (NewFileInfo->FileName[StrLen(NewFileInfo->FileName)-1] == L'\\') { + Length = StrLen(NewFileInfo->FileName); + if (Length > 0) { + Length--; + } + if (NewFileInfo->FileName[Length] == L'\\') { if (Node->FileName[0] == L'\\') { // // Don't allow for double slashes. Eliminate one of them. // - NewFileInfo->FileName[StrLen(NewFileInfo->FileName)-1] = CHAR_NULL; + NewFileInfo->FileName[Length] = CHAR_NULL; } StrCat(NewFileInfo->FileName, Node->FileName); } -- cgit v1.2.3