From 74fa83fda6be6277044619276d0f1391e72e54a2 Mon Sep 17 00:00:00 2001 From: jcarsey Date: Thu, 2 Feb 2012 16:55:30 +0000 Subject: ShellPkg: fix 'ls' handling of empty drives where there is not even an "." or ".." directory. Signed-off-by: jcarsey Reviewed-by: winddy_zhang@byosoft.com.cn git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12981 6f19259b-4bc3-4df7-8a09-765794883524 --- ShellPkg/Library/UefiShellLevel2CommandsLib/Ls.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'ShellPkg/Library/UefiShellLevel2CommandsLib') diff --git a/ShellPkg/Library/UefiShellLevel2CommandsLib/Ls.c b/ShellPkg/Library/UefiShellLevel2CommandsLib/Ls.c index 3799341..55267a4 100644 --- a/ShellPkg/Library/UefiShellLevel2CommandsLib/Ls.c +++ b/ShellPkg/Library/UefiShellLevel2CommandsLib/Ls.c @@ -66,14 +66,22 @@ PrintLsOutput( CorrectedPath = NULL; CorrectedPath = StrnCatGrow(&CorrectedPath, NULL, Path, 0); - ASSERT(CorrectedPath != NULL); + if (CorrectedPath == NULL) { + return (SHELL_OUT_OF_RESOURCES); + } + PathCleanUpDirectories(CorrectedPath); Status = ShellOpenFileMetaArg((CHAR16*)CorrectedPath, EFI_FILE_MODE_READ, &ListHead); if (EFI_ERROR(Status)) { + SHELL_FREE_NON_NULL(CorrectedPath); + if(Status == EFI_NOT_FOUND){ + return (SHELL_NOT_FOUND); + } return (SHELL_DEVICE_ERROR); } if (ListHead == NULL || IsListEmpty(&ListHead->Link)) { + SHELL_FREE_NON_NULL(CorrectedPath); // // On the first one only we expect to find something... // do we find the . and .. directories otherwise? -- cgit v1.1