]> git.proxmox.com Git - mirror_edk2.git/commitdiff
add user input verification.
authorjcarsey <jcarsey@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 7 Apr 2011 21:44:09 +0000 (21:44 +0000)
committerjcarsey <jcarsey@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 7 Apr 2011 21:44:09 +0000 (21:44 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11512 6f19259b-4bc3-4df7-8a09-765794883524

ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/HexEdit.c

index 36c913939b0d5b7773fd77f56915236f376f7f90..11a11ee9701cd93a3ead70a866a847c840321f97 100644 (file)
@@ -90,7 +90,10 @@ ShellCommandRunHexEdit (
     // Check for -d\r
     //\r
     if (ShellCommandLineGetFlag(Package, L"-d")){\r
-      if (ShellCommandLineGetCount(Package) > 4) {\r
+      if (ShellCommandLineGetCount(Package) < 4) {\r
+        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellDebug1HiiHandle);\r
+        ShellStatus = SHELL_INVALID_PARAMETER;\r
+      } else if (ShellCommandLineGetCount(Package) > 4) {\r
         ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle);\r
         ShellStatus = SHELL_INVALID_PARAMETER;\r
       } else {\r
@@ -99,13 +102,20 @@ ShellCommandRunHexEdit (
         Offset  = ShellStrToUintn(ShellCommandLineGetRawValue(Package, 2));\r
         Size    = ShellStrToUintn(ShellCommandLineGetRawValue(Package, 3));\r
       }\r
+      if (Offset == (UINTN)-1 || Size == (UINTN)-1) {\r
+        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM_VAL), gShellDebug1HiiHandle, L"-d");\r
+        ShellStatus = SHELL_INVALID_PARAMETER;\r
+      }\r
     }\r
 \r
     //\r
     // check for -f\r
     //\r
     if (ShellCommandLineGetFlag(Package, L"-f") && (WhatToDo == FileTypeNone)){\r
-      if (ShellCommandLineGetCount(Package) > 2) {\r
+      if (ShellCommandLineGetCount(Package) < 2) {\r
+        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellDebug1HiiHandle);\r
+        ShellStatus = SHELL_INVALID_PARAMETER;\r
+      } else if (ShellCommandLineGetCount(Package) > 2) {\r
         ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle);\r
         ShellStatus = SHELL_INVALID_PARAMETER;\r
       } else {\r
@@ -157,7 +167,10 @@ ShellCommandRunHexEdit (
     if (ShellStatus == SHELL_SUCCESS && WhatToDo == FileTypeNone) {\r
       ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellDebug1HiiHandle);\r
       ShellStatus = SHELL_INVALID_PARAMETER;\r
-    }\r
+    } else if (WhatToDo == FileTypeFileBuffer && ShellGetCurrentDir(NULL) == NULL) {\r
+      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_CWD), gShellDebug1HiiHandle);\r
+      ShellStatus = SHELL_INVALID_PARAMETER;\r
+    }    \r
 \r
     if (ShellStatus == SHELL_SUCCESS) {\r
       //\r