]> git.proxmox.com Git - mirror_edk2.git/commitdiff
add more user input verification to connect and vol commands.
authorjcarsey <jcarsey@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 30 Mar 2011 16:36:42 +0000 (16:36 +0000)
committerjcarsey <jcarsey@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 30 Mar 2011 16:36:42 +0000 (16:36 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11458 6f19259b-4bc3-4df7-8a09-765794883524

ShellPkg/Library/UefiShellDriver1CommandsLib/Connect.c
ShellPkg/Library/UefiShellLevel2CommandsLib/Vol.c

index 7073c44260ad293b5674e3ceca6a70c8fa9d52a3..e4e780a43733ad18c395b002a669bbc8013883d7 100644 (file)
@@ -348,6 +348,9 @@ ShellCommandRunConnect (
         } else if (Param2 != NULL && Handle2 == NULL) {\r
           ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_INV_HANDLE), gShellDriver1HiiHandle, Param2);\r
           ShellStatus = SHELL_INVALID_PARAMETER;\r
+        } else if (Handle2 != NULL && Handle1 != NULL && EFI_ERROR(gBS->OpenProtocol(Handle2, &gEfiDriverBindingProtocolGuid, NULL, gImageHandle, NULL, EFI_OPEN_PROTOCOL_TEST_PROTOCOL))) {\r
+          ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_INV_HANDLE), gShellDriver1HiiHandle, Param2);\r
+          ShellStatus = SHELL_INVALID_PARAMETER;\r
         } else {\r
           Status = ConvertAndConnectControllers(Handle1, Handle2, ShellCommandLineGetFlag(Package, L"-r"), (BOOLEAN)(Count!=0));\r
           if (EFI_ERROR(Status)) {\r
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