diff --git a/ShellPkg/Library/UefiShellLevel2CommandsLib/Mv.c b/ShellPkg/Library/UefiShellLevel2CommandsLib/Mv.c index 29efb1c6fe..d02a6ae5f5 100644 --- a/ShellPkg/Library/UefiShellLevel2CommandsLib/Mv.c +++ b/ShellPkg/Library/UefiShellLevel2CommandsLib/Mv.c @@ -483,18 +483,21 @@ ValidateAndMoveFiles( Response = *Resp; Attr = 0; CleanFilePathStr = NULL; + FullCwd = NULL; - FullCwd = AllocateZeroPool(StrSize(Cwd) + sizeof(CHAR16)); - if (FullCwd == NULL) { - return SHELL_OUT_OF_RESOURCES; - } else { - StrCpyS(FullCwd, StrSize(Cwd)/sizeof(CHAR16)+1, Cwd); - StrCatS(FullCwd, StrSize(Cwd)/sizeof(CHAR16)+1, L"\\"); - } + if (Cwd != NULL) { + FullCwd = AllocateZeroPool(StrSize(Cwd) + sizeof(CHAR16)); + if (FullCwd == NULL) { + return SHELL_OUT_OF_RESOURCES; + } else { + StrCpyS(FullCwd, StrSize(Cwd)/sizeof(CHAR16)+1, Cwd); + StrCatS(FullCwd, StrSize(Cwd)/sizeof(CHAR16)+1, L"\\"); + } + } Status = ShellLevel2StripQuotes (DestParameter, &CleanFilePathStr); if (EFI_ERROR (Status)) { - FreePool (FullCwd); + SHELL_FREE_NON_NULL(FullCwd); if (Status == EFI_OUT_OF_RESOURCES) { return SHELL_OUT_OF_RESOURCES; } else { @@ -511,7 +514,7 @@ ValidateAndMoveFiles( FreePool (CleanFilePathStr); if (ShellStatus != SHELL_SUCCESS) { - FreePool (FullCwd); + SHELL_FREE_NON_NULL (FullCwd); return (ShellStatus); } DestPath = PathCleanUpDirectories(DestPath); @@ -526,7 +529,7 @@ ValidateAndMoveFiles( SHELL_FREE_NON_NULL(DestPath); SHELL_FREE_NON_NULL(HiiOutput); SHELL_FREE_NON_NULL(HiiResultOk); - FreePool (FullCwd); + SHELL_FREE_NON_NULL(FullCwd); return (SHELL_OUT_OF_RESOURCES); } @@ -588,7 +591,7 @@ ValidateAndMoveFiles( // // indicate to stop everything // - FreePool(FullCwd); + SHELL_FREE_NON_NULL(FullCwd); return (SHELL_ABORTED); case ShellPromptResponseAll: *Resp = Response; @@ -599,7 +602,7 @@ ValidateAndMoveFiles( break; default: FreePool(Response); - FreePool(FullCwd); + SHELL_FREE_NON_NULL(FullCwd); return SHELL_ABORTED; } Status = ShellDeleteFileByName(FullDestPath!=NULL? FullDestPath:DestPath); @@ -646,7 +649,7 @@ ValidateAndMoveFiles( SHELL_FREE_NON_NULL(DestPath); SHELL_FREE_NON_NULL(HiiOutput); SHELL_FREE_NON_NULL(HiiResultOk); - FreePool (FullCwd); + SHELL_FREE_NON_NULL(FullCwd); return (ShellStatus); }