From 33c031ee2092282a069ce07d30202082ceaf61fe Mon Sep 17 00:00:00 2001 From: jcarsey Date: Wed, 30 Mar 2011 19:33:03 +0000 Subject: pointer verification (not NULL) and buffer overrun fixes. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11459 6f19259b-4bc3-4df7-8a09-765794883524 --- .../UefiShellDebug1CommandsLib/HexEdit/BufferImage.c | 6 +++--- .../Library/UefiShellDebug1CommandsLib/HexEdit/FileImage.c | 2 +- .../Library/UefiShellDebug1CommandsLib/HexEdit/HexEdit.c | 2 +- ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/Misc.c | 13 ++++++++----- 4 files changed, 13 insertions(+), 10 deletions(-) (limited to 'ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit') diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/BufferImage.c b/ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/BufferImage.c index 60e0b75435..675850cff4 100644 --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/BufferImage.c +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/BufferImage.c @@ -637,7 +637,7 @@ HBufferImageRestoreMousePosition ( CurrentLine = HBufferImage.CurrentLine; Line = HMoveLine (FRow - HBufferImage.BufferPosition.Row); - if (FColumn > Line->Size) { + if (Line == NULL || FColumn > Line->Size) { HasCharacter = FALSE; } @@ -1620,7 +1620,7 @@ Returns: // HBufferImage.BufferPosition.Row = NewFilePosRow; if (RowGap <= 0) { - Abs = -RowGap; + Abs = (UINTN)ABS(RowGap); HBufferImage.DisplayPosition.Row -= Abs; } else { HBufferImage.DisplayPosition.Row += RowGap; @@ -1931,7 +1931,7 @@ Returns: // // if that line, is not that long, so move to the end of that line // - if (FCol > Line->Size) { + if (Line != NULL && FCol > Line->Size) { FCol = Line->Size + 1; HighBits = TRUE; } diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/FileImage.c b/ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/FileImage.c index 57cefb882c..fd6387a20a 100644 --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/FileImage.c +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/FileImage.c @@ -383,7 +383,7 @@ Returns: // // if is the old file // - if (StrCmp (FileName, HFileImage.FileName) == 0) { + if (HFileImage.FileName != NULL && FileName != NULL && StrCmp (FileName, HFileImage.FileName) == 0) { // // check whether file exists on disk // diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/HexEdit.c b/ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/HexEdit.c index 0a97a6ca29..53718c7751 100644 --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/HexEdit.c +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/HexEdit.c @@ -110,7 +110,7 @@ ShellCommandRunHexEdit ( ShellStatus = SHELL_INVALID_PARAMETER; } else { Name = ShellCommandLineGetRawValue(Package, 1); - if (!IsValidFileName(Name)) { + if (Name == NULL || !IsValidFileName(Name)) { ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDebug1HiiHandle, Name); ShellStatus = SHELL_INVALID_PARAMETER; } else { diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/Misc.c b/ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/Misc.c index 8ae21450c4..da11789625 100644 --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/Misc.c +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/HexEdit/Misc.c @@ -256,10 +256,10 @@ Returns: // do not set currentline to Line // if (Count <= 0) { - AbsCount = -Count; + AbsCount = (UINTN)ABS(Count); Line = _HLineRetreat (AbsCount); } else { - Line = _HLineAdvance (Count); + Line = _HLineAdvance ((UINTN)Count); } return Line; @@ -297,10 +297,10 @@ Returns: // >0: advance // if (Count <= 0) { - AbsCount = -Count; + AbsCount = (UINTN)ABS(Count); Line = _HLineRetreat (AbsCount); } else { - Line = _HLineAdvance (Count); + Line = _HLineAdvance ((UINTN)Count); } if (Line == NULL) { @@ -399,7 +399,10 @@ Returns: Lenp = StrLen (Pat); Lens = StrLen (Str); - Failure = AllocateZeroPool (Lenp * sizeof (INTN)); + Failure = AllocateZeroPool ((UINTN)(Lenp * sizeof (INTN))); + if (Failure == NULL) { + return 0; + } Failure[0] = -1; for (j = 1; j < Lenp; j++) { i = Failure[j - 1]; -- cgit v1.2.3