smbiosview - add user input verification.

HexEdit/Edit
 - More user input verification for HexEdit.
 - updated title bar refreshment.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11448 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
jcarsey
2011-03-29 19:31:18 +00:00
parent 64d753f12d
commit 980d554e3a
12 changed files with 157 additions and 78 deletions

View File

@ -44,7 +44,7 @@ ShellCommandRunHexEdit (
SHELL_STATUS ShellStatus;
LIST_ENTRY *Package;
CONST CHAR16 *Cwd;
CHAR16 *NFS;
CHAR16 *NewName;
CHAR16 *Spot;
CONST CHAR16 *Name;
UINTN Offset;
@ -54,7 +54,7 @@ ShellCommandRunHexEdit (
Buffer = NULL;
ShellStatus = SHELL_SUCCESS;
NFS = NULL;
NewName = NULL;
Cwd = NULL;
Buffer = NULL;
Name = NULL;
@ -90,10 +90,7 @@ ShellCommandRunHexEdit (
// Check for -d
//
if (ShellCommandLineGetFlag(Package, L"-d")){
if (ShellCommandLineGetCount(Package) < 4) {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellDebug1HiiHandle);
ShellStatus = SHELL_INVALID_PARAMETER;
} else if (ShellCommandLineGetCount(Package) > 4) {
if (ShellCommandLineGetCount(Package) > 4) {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle);
ShellStatus = SHELL_INVALID_PARAMETER;
} else {
@ -138,7 +135,24 @@ ShellCommandRunHexEdit (
Size = ShellStrToUintn(ShellCommandLineGetRawValue(Package, 2));
}
}
ShellCommandLineFreeVarList (Package);
if (WhatToDo == FileTypeNone && ShellCommandLineGetRawValue(Package, 1) != NULL) {
Name = ShellCommandLineGetRawValue(Package, 1);
if (!IsValidFileName(Name)) {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDebug1HiiHandle, Name);
ShellStatus = SHELL_INVALID_PARAMETER;
} else {
WhatToDo = FileTypeFileBuffer;
}
} else if (WhatToDo == FileTypeNone) {
if (gEfiShellProtocol->GetCurDir(NULL) == NULL) {
ShellStatus = SHELL_NOT_FOUND;
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_CWD), gShellDebug1HiiHandle);
} else {
NewName = EditGetDefaultFileName(L"bin");
Name = NewName;
WhatToDo = FileTypeFileBuffer;
}
}
if (ShellStatus == SHELL_SUCCESS && WhatToDo == FileTypeNone) {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellDebug1HiiHandle);
@ -240,8 +254,10 @@ ShellCommandRunHexEdit (
}
}
}
ShellCommandLineFreeVarList (Package);
}
SHELL_FREE_NON_NULL (Buffer);
SHELL_FREE_NON_NULL (NewName);
return ShellStatus;
}