]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Library/UefiShellLevel2CommandsLib/Ls.c
pointer verification (not NULL) and buffer overrun fixes.
[mirror_edk2.git] / ShellPkg / Library / UefiShellLevel2CommandsLib / Ls.c
index 73765113f47444fbf4950d4a86ac299c2a63a468..64dfae32913dad630903e9f633fe24f308f54647 100644 (file)
@@ -523,10 +523,15 @@ ShellCommandRunLs (
           }\r
         }\r
         if (PathName != NULL) {\r
-          ASSERT((FullPath == NULL && Size == 0) || (FullPath != NULL));\r
-          StrnCatGrow(&FullPath, &Size, PathName, 0);\r
-          if  (ShellIsDirectory(PathName) == EFI_SUCCESS) {\r
-            StrnCatGrow(&FullPath, &Size, L"\\*", 0);\r
+          if (StrStr(PathName, L":") == NULL && gEfiShellProtocol->GetCurDir(NULL) == NULL) {\r
+            ShellStatus = SHELL_NOT_FOUND;\r
+            ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_CWD), gShellLevel2HiiHandle);\r
+          } else {\r
+            ASSERT((FullPath == NULL && Size == 0) || (FullPath != NULL));\r
+            StrnCatGrow(&FullPath, &Size, PathName, 0);\r
+            if  (ShellIsDirectory(PathName) == EFI_SUCCESS) {\r
+              StrnCatGrow(&FullPath, &Size, L"\\*", 0);\r
+            }\r
           }\r
         } else {\r
           ASSERT(FullPath == NULL);\r