On 04/08/16 09:53, Qiu Shumin wrote: > Shell will ASSERT when doing the following operation: > "" > Shell> mv fs2:\file1 fs2:\file2 > "" > This patch add NULL pointer check to fix this issue. > > Cc: Jaben Carsey <[email protected]> > Cc: Ruiyu Ni <[email protected]> > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Qiu Shumin <[email protected]> > --- > ShellPkg/Library/UefiShellLevel2CommandsLib/Mv.c | 29 > +++++++++++++----------- > 1 file changed, 16 insertions(+), 13 deletions(-)
Can you please add the following to the commit message, below the "Cc" tags: Fixes: https://github.com/tianocore/edk2/issues/76 Thanks! Laszlo > diff --git a/ShellPkg/Library/UefiShellLevel2CommandsLib/Mv.c > b/ShellPkg/Library/UefiShellLevel2CommandsLib/Mv.c > index 29efb1c..d02a6ae 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); > } > > _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

