]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Library/UefiShellLevel2CommandsLib/Vol.c
add more user input verification to connect and vol commands.
[mirror_edk2.git] / ShellPkg / Library / UefiShellLevel2CommandsLib / Vol.c
index 8757ff1b302319990ee40ea463477b5cfdf2e596..e9cd0d098244aff95dd0b63096a1ca2f26884068 100644 (file)
@@ -44,6 +44,28 @@ HandleVol(
 \r
   ShellStatus   = SHELL_SUCCESS;\r
 \r
+  if (\r
+      StrStr(Name, L"%") != NULL ||\r
+      StrStr(Name, L"^") != NULL ||\r
+      StrStr(Name, L"*") != NULL ||\r
+      StrStr(Name, L"+") != NULL ||\r
+      StrStr(Name, L"=") != NULL ||\r
+      StrStr(Name, L"[") != NULL ||\r
+      StrStr(Name, L"]") != NULL ||\r
+      StrStr(Name, L"|") != NULL ||\r
+      StrStr(Name, L":") != NULL ||\r
+      StrStr(Name, L";") != NULL ||\r
+      StrStr(Name, L"\"") != NULL ||\r
+      StrStr(Name, L"<") != NULL ||\r
+      StrStr(Name, L">") != NULL ||\r
+      StrStr(Name, L"?") != NULL ||\r
+      StrStr(Name, L"/") != NULL ||\r
+      StrStr(Name, L" ") != NULL\r
+      ){\r
+    ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellLevel2HiiHandle, Name);\r
+    return (SHELL_INVALID_PARAMETER);\r
+  }\r
+\r
   Status = gEfiShellProtocol->OpenFileByName(\r
     Path,\r
     &ShellFileHandle,\r
@@ -51,8 +73,7 @@ HandleVol(
 \r
   if (EFI_ERROR(Status) || ShellFileHandle == NULL) {\r
     ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellLevel2HiiHandle, Path);\r
-    ShellStatus = SHELL_ACCESS_DENIED;\r
-    return (ShellStatus);\r
+    return (SHELL_ACCESS_DENIED);\r
   }\r
 \r
   //\r