]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/HexEdit.c
add user input verification.
[mirror_edk2.git] / 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