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

@@ -954,6 +954,7 @@ HBufferImageRead (
// variable initialization
//
Status = EFI_SUCCESS;
HBufferImage.BufferType = BufferType;
//
// three types of buffer supported

View File

@@ -219,6 +219,7 @@ Returns:
{
CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath;
EFI_DEVICE_PATH_PROTOCOL *DupDevicePath;
EFI_DEVICE_PATH_PROTOCOL *DupDevicePathForFree;
EFI_HANDLE Handle;
EFI_BLOCK_IO_PROTOCOL *BlkIo;
EFI_STATUS Status;
@@ -241,11 +242,12 @@ Returns:
return EFI_INVALID_PARAMETER;
}
DupDevicePath = DuplicateDevicePath(DevicePath);
DupDevicePathForFree = DupDevicePath;
//
// get blkio interface
//
Status = gBS->LocateDevicePath(&gEfiBlockIoProtocolGuid,&DupDevicePath,&Handle);
FreePool(DupDevicePath);
FreePool(DupDevicePathForFree);
if (EFI_ERROR (Status)) {
StatusBarSetStatusString (L"Read Disk Failed");
return Status;

View File

@@ -301,6 +301,7 @@ Returns:
HBufferImage.HighBits = TRUE;
HBufferImage.BufferPosition.Row = 1;
HBufferImage.BufferPosition.Column = 1;
HBufferImage.BufferType = FileTypeFileBuffer;
if (!Recover) {
UnicodeBuffer = CatSPrint(NULL, L"%d Lines Read", HBufferImage.NumLines);

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;
}

View File

@@ -933,7 +933,9 @@ Returns:
HMainEditor.BufferImage->FileImage->ReadOnly,
FALSE,
HMainEditor.ScreenSize.Column,
HMainEditor.ScreenSize.Row
HMainEditor.ScreenSize.Row,
HMainEditor.BufferImage->BufferType == FileTypeDiskBuffer?HMainEditor.BufferImage->DiskImage->Offset:HMainEditor.BufferImage->BufferType == FileTypeMemBuffer?HMainEditor.BufferImage->MemImage->Offset:0,
HMainEditor.BufferImage->BufferType == FileTypeDiskBuffer?HMainEditor.BufferImage->DiskImage->Size :HMainEditor.BufferImage->BufferType == FileTypeMemBuffer?HMainEditor.BufferImage->MemImage->Size :0
);
Done = TRUE;
break;
@@ -1158,7 +1160,9 @@ Returns:
HMainEditor.BufferImage->FileImage->ReadOnly,
FALSE,
HMainEditor.ScreenSize.Column,
HMainEditor.ScreenSize.Row
HMainEditor.ScreenSize.Row,
HMainEditor.BufferImage->BufferType == FileTypeDiskBuffer?HMainEditor.BufferImage->DiskImage->Offset:HMainEditor.BufferImage->BufferType == FileTypeMemBuffer?HMainEditor.BufferImage->MemImage->Offset:0,
HMainEditor.BufferImage->BufferType == FileTypeDiskBuffer?HMainEditor.BufferImage->DiskImage->Size :HMainEditor.BufferImage->BufferType == FileTypeMemBuffer?HMainEditor.BufferImage->MemImage->Size :0
);
Done = TRUE;
break;
@@ -1409,7 +1413,9 @@ Returns:
HMainEditor.BufferImage->FileImage->ReadOnly,
FALSE,
HMainEditor.ScreenSize.Column,
HMainEditor.ScreenSize.Row
HMainEditor.ScreenSize.Row,
HMainEditor.BufferImage->BufferType == FileTypeDiskBuffer?HMainEditor.BufferImage->DiskImage->Offset:HMainEditor.BufferImage->BufferType == FileTypeMemBuffer?HMainEditor.BufferImage->MemImage->Offset:0,
HMainEditor.BufferImage->BufferType == FileTypeDiskBuffer?HMainEditor.BufferImage->DiskImage->Size :HMainEditor.BufferImage->BufferType == FileTypeMemBuffer?HMainEditor.BufferImage->MemImage->Size :0
);
Done = TRUE;
break;
@@ -1827,6 +1833,25 @@ Returns:
--*/
{
BOOLEAN NameChange;
BOOLEAN ReadChange;
NameChange = FALSE;
ReadChange = FALSE;
if ( HMainEditor.BufferImage->FileImage != NULL &&
HMainEditor.BufferImage->FileImage->FileName != NULL &&
HBufferImageBackupVar.FileImage != NULL &&
HBufferImageBackupVar.FileImage->FileName != NULL &&
StrCmp (HMainEditor.BufferImage->FileImage->FileName, HBufferImageBackupVar.FileImage->FileName) != 0 ) {
NameChange = TRUE;
}
if ( HMainEditor.BufferImage->FileImage != NULL &&
HBufferImageBackupVar.FileImage != NULL &&
HMainEditor.BufferImage->FileImage->ReadOnly != HBufferImageBackupVar.FileImage->ReadOnly ) {
ReadChange = TRUE;
}
//
// to aVOID screen flicker
// the stall value is from experience
@@ -1834,28 +1859,48 @@ Returns:
gBS->Stall (50);
//
// call the four components refresh function
// call the components refresh function
//
MainTitleBarRefresh (
HMainEditor.BufferImage->BufferType == FileTypeFileBuffer?HMainEditor.BufferImage->FileImage->FileName:HMainEditor.BufferImage->BufferType == FileTypeDiskBuffer?HMainEditor.BufferImage->DiskImage->Name:NULL,
HMainEditor.BufferImage->BufferType,
HMainEditor.BufferImage->FileImage->ReadOnly,
HMainEditor.BufferImage->Modified,
HMainEditor.ScreenSize.Column,
HMainEditor.ScreenSize.Row
);
HBufferImageRefresh ();
StatusBarRefresh (
HEditorFirst,
HMainEditor.ScreenSize.Row,
HMainEditor.ScreenSize.Column,
0,
0,
TRUE
);
MenuBarRefresh (
HMainEditor.ScreenSize.Row,
HMainEditor.ScreenSize.Column);
if (HEditorFirst
|| NameChange
|| HMainEditor.BufferImage->BufferType != HBufferImageBackupVar.BufferType
|| HBufferImageBackupVar.Modified != HMainEditor.BufferImage->Modified
|| ReadChange ) {
MainTitleBarRefresh (
HMainEditor.BufferImage->BufferType == FileTypeFileBuffer?HMainEditor.BufferImage->FileImage->FileName:HMainEditor.BufferImage->BufferType == FileTypeDiskBuffer?HMainEditor.BufferImage->DiskImage->Name:NULL,
HMainEditor.BufferImage->BufferType,
HMainEditor.BufferImage->FileImage->ReadOnly,
HMainEditor.BufferImage->Modified,
HMainEditor.ScreenSize.Column,
HMainEditor.ScreenSize.Row,
HMainEditor.BufferImage->BufferType == FileTypeDiskBuffer?HMainEditor.BufferImage->DiskImage->Offset:HMainEditor.BufferImage->BufferType == FileTypeMemBuffer?HMainEditor.BufferImage->MemImage->Offset:0,
HMainEditor.BufferImage->BufferType == FileTypeDiskBuffer?HMainEditor.BufferImage->DiskImage->Size :HMainEditor.BufferImage->BufferType == FileTypeMemBuffer?HMainEditor.BufferImage->MemImage->Size :0
);
HBufferImageRefresh ();
}
if (HEditorFirst
|| HBufferImageBackupVar.DisplayPosition.Row != HMainEditor.BufferImage->DisplayPosition.Row
|| HBufferImageBackupVar.DisplayPosition.Column != HMainEditor.BufferImage->DisplayPosition.Column
|| StatusBarGetRefresh()) {
StatusBarRefresh (
HEditorFirst,
HMainEditor.ScreenSize.Row,
HMainEditor.ScreenSize.Column,
0,
0,
TRUE
);
HBufferImageRefresh ();
}
if (HEditorFirst) {
MenuBarRefresh (
HMainEditor.ScreenSize.Row,
HMainEditor.ScreenSize.Column);
HBufferImageRefresh ();
}
//
// EditorFirst is now set to FALSE