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

@ -3134,7 +3134,7 @@ FileBufferReplace (
FileBuffer.FileModified = TRUE;
MainTitleBarRefresh (MainEditor.FileBuffer->FileName, MainEditor.FileBuffer->FileType, MainEditor.FileBuffer->ReadOnly, MainEditor.FileBuffer->FileModified, MainEditor.ScreenSize.Column, MainEditor.ScreenSize.Row);
MainTitleBarRefresh (MainEditor.FileBuffer->FileName, MainEditor.FileBuffer->FileType, MainEditor.FileBuffer->ReadOnly, MainEditor.FileBuffer->FileModified, MainEditor.ScreenSize.Column, MainEditor.ScreenSize.Row, 0, 0);
FileBufferRestorePosition ();
FileBufferRefresh ();

View File

@ -271,7 +271,7 @@ MainCommandOpenFile (
return Status;
}
MainTitleBarRefresh (MainEditor.FileBuffer->FileName, MainEditor.FileBuffer->FileType, MainEditor.FileBuffer->ReadOnly, MainEditor.FileBuffer->FileModified, MainEditor.ScreenSize.Column, MainEditor.ScreenSize.Row);
MainTitleBarRefresh (MainEditor.FileBuffer->FileName, MainEditor.FileBuffer->FileType, MainEditor.FileBuffer->ReadOnly, MainEditor.FileBuffer->FileModified, MainEditor.ScreenSize.Column, MainEditor.ScreenSize.Row, 0, 0);
FileBufferRestorePosition ();
Done = TRUE;
break;
@ -1510,7 +1510,7 @@ MainEditorRefresh (
|| FileBufferBackupVar.FileModified != FileBuffer.FileModified
|| FileBufferBackupVar.ReadOnly != FileBuffer.ReadOnly) {
MainTitleBarRefresh (MainEditor.FileBuffer->FileName, MainEditor.FileBuffer->FileType, MainEditor.FileBuffer->ReadOnly, MainEditor.FileBuffer->FileModified, MainEditor.ScreenSize.Column, MainEditor.ScreenSize.Row);
MainTitleBarRefresh (MainEditor.FileBuffer->FileName, MainEditor.FileBuffer->FileType, MainEditor.FileBuffer->ReadOnly, MainEditor.FileBuffer->FileModified, MainEditor.ScreenSize.Column, MainEditor.ScreenSize.Row, 0, 0);
FileBufferRestorePosition ();
FileBufferRefresh ();
}

View File

@ -79,6 +79,8 @@ typedef union {
@param[in] Modified TRUE if the file was modified. FALSE otherwise.
@param[in] LastCol The last printable column.
@param[in] LastRow The last printable row.
@param[in] Offset The offset into the file. (only for mem/disk)
@param[in] Size The file's size. (only for mem/disk)
@retval EFI_SUCCESS The operation was successful.
**/
@ -87,10 +89,12 @@ EFIAPI
MainTitleBarRefresh (
IN CONST CHAR16 *FileName OPTIONAL,
IN CONST EDIT_FILE_TYPE FileType,
IN BOOLEAN ReadOnly,
IN BOOLEAN Modified,
IN UINTN LastCol,
IN UINTN LastRow
IN CONST BOOLEAN ReadOnly,
IN CONST BOOLEAN Modified,
IN CONST UINTN LastCol,
IN CONST UINTN LastRow,
IN CONST UINTN Offset,
IN CONST UINTN Size
)
{
TITLE_BAR_COLOR_UNION Orig;

View File

@ -56,6 +56,8 @@ typedef enum {
@param[in] Modified TRUE if the file was modified. FALSE otherwise.
@param[in] LastCol The last printable column.
@param[in] LastRow The last printable row.
@param[in] Offset The offset into the file. (only for mem/disk)
@param[in] Size The file's size. (only for mem/disk)
@retval EFI_SUCCESS The operation was successful.
**/
@ -64,10 +66,12 @@ EFIAPI
MainTitleBarRefresh (
IN CONST CHAR16 *FileName OPTIONAL,
IN CONST EDIT_FILE_TYPE FileType,
IN BOOLEAN ReadOnly,
IN BOOLEAN Modified,
IN UINTN LastCol,
IN UINTN LastRow
IN CONST BOOLEAN ReadOnly,
IN CONST BOOLEAN Modified,
IN CONST UINTN LastCol,
IN CONST UINTN LastRow,
IN CONST UINTN Offset,
IN CONST UINTN Size
);
#endif

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

View File

@ -65,6 +65,12 @@ ShellCommandRunSmbiosView (
if (ShellCommandLineGetCount(Package) > 1) {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle);
ShellStatus = SHELL_INVALID_PARAMETER;
} else if (ShellCommandLineGetFlag(Package, L"-t") && ShellCommandLineGetValue(Package, L"-t") == NULL) {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_VALUE), gShellDebug1HiiHandle, L"-t");
ShellStatus = SHELL_INVALID_PARAMETER;
} else if (ShellCommandLineGetFlag(Package, L"-h") && ShellCommandLineGetValue(Package, L"-h") == NULL) {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_VALUE), gShellDebug1HiiHandle, L"-h");
ShellStatus = SHELL_INVALID_PARAMETER;
} else if (
(ShellCommandLineGetFlag(Package, L"-t") && ShellCommandLineGetFlag(Package, L"-h")) ||
(ShellCommandLineGetFlag(Package, L"-t") && ShellCommandLineGetFlag(Package, L"-s")) ||

View File

@ -41,13 +41,13 @@
Pci.h
DmpStore.c
Dblk.c
./SmbiosView/EventLogInfo.c
./SmbiosView/PrintInfo.c
./SmbiosView/QueryTable.c
./SmbiosView/SmbiosView.c
./SmbiosView/Smbios.c
./SmbiosView/SmbiosViewStrings.uni
./SmbiosView/LibSmbiosView.c
SmbiosView/EventLogInfo.c
SmbiosView/PrintInfo.c
SmbiosView/QueryTable.c
SmbiosView/SmbiosView.c
SmbiosView/Smbios.c
SmbiosView/SmbiosViewStrings.uni
SmbiosView/LibSmbiosView.c
UefiShellDebug1CommandsLib.c
UefiShellDebug1CommandsLib.h
UefiShellDebug1CommandsLib.uni
@ -63,36 +63,36 @@
EditMenuBar.c
## Files specific to the text editor
./Edit/Edit.c
./Edit/TextEditor.h
./Edit/TextEditorTypes.h
./Edit/FileBuffer.h
./Edit/FileBuffer.c
./Edit/MainTextEditor.h
./Edit/MainTextEditor.c
./Edit/Misc.h
./Edit/Misc.c
./Edit/TextEditStrings.uni
Edit/Edit.c
Edit/TextEditor.h
Edit/TextEditorTypes.h
Edit/FileBuffer.h
Edit/FileBuffer.c
Edit/MainTextEditor.h
Edit/MainTextEditor.c
Edit/Misc.h
Edit/Misc.c
Edit/TextEditStrings.uni
## Files specific to the HEX editor
./HexEdit/BufferImage.h
./HexEdit/BufferImage.c
./HexEdit/Clipboard.h
./HexEdit/Clipboard.c
./HexEdit/DiskImage.h
./HexEdit/DiskImage.c
./HexEdit/FileImage.h
./HexEdit/FileImage.c
./HexEdit/HexEdit.c
./HexEdit/HexEditor.h
./HexEdit/HexEditorTypes.h
./HexEdit/HexeditStrings.uni
./HexEdit/MainHexEditor.h
./HexEdit/MainHexEditor.c
./HexEdit/MemImage.h
./HexEdit/MemImage.c
./HexEdit/Misc.h
./HexEdit/Misc.c
HexEdit/BufferImage.h
HexEdit/BufferImage.c
HexEdit/Clipboard.h
HexEdit/Clipboard.c
HexEdit/DiskImage.h
HexEdit/DiskImage.c
HexEdit/FileImage.h
HexEdit/FileImage.c
HexEdit/HexEdit.c
HexEdit/HexEditor.h
HexEdit/HexEditorTypes.h
HexEdit/HexeditStrings.uni
HexEdit/MainHexEditor.h
HexEdit/MainHexEditor.c
HexEdit/MemImage.h
HexEdit/MemImage.c
HexEdit/Misc.h
HexEdit/Misc.c
[Packages]
MdePkg/MdePkg.dec