From cbdd109b43c8386d74a7bb40d892e5c2485f71f9 Mon Sep 17 00:00:00 2001 From: jcarsey Date: Mon, 4 Apr 2011 21:41:24 +0000 Subject: check memory allocations for success. check pointer before access. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11503 6f19259b-4bc3-4df7-8a09-765794883524 --- .../UefiShellDebug1CommandsLib/Edit/FileBuffer.c | 2 +- .../Library/UefiShellDebug1CommandsLib/SetVar.c | 21 +++++++++++++-------- 2 files changed, 14 insertions(+), 9 deletions(-) (limited to 'ShellPkg/Library/UefiShellDebug1CommandsLib') diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/Edit/FileBuffer.c b/ShellPkg/Library/UefiShellDebug1CommandsLib/Edit/FileBuffer.c index 8223847924..8f7c870bb1 100644 --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/Edit/FileBuffer.c +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/Edit/FileBuffer.c @@ -2760,7 +2760,7 @@ FileBufferMovePosition ( // FileBuffer.FilePosition.Column = NewFilePosCol; if (ColGap < 0) { - Abs = -ColGap; + Abs = (UINTN)(-ColGap); FileBuffer.DisplayPosition.Column -= Abs; } else { FileBuffer.DisplayPosition.Column += ColGap; diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/SetVar.c b/ShellPkg/Library/UefiShellDebug1CommandsLib/SetVar.c index afccf7bd58..34eb6af8ac 100644 --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/SetVar.c +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/SetVar.c @@ -205,15 +205,20 @@ ShellCommandRunSetVar ( Data++; Data++; Buffer = AllocateZeroPool(StrSize(Data)); - UnicodeSPrint(Buffer, StrSize(Data), L"%s", Data); - ((CHAR16*)Buffer)[StrLen(Buffer)-1] = CHAR_NULL; - - Status = gRT->SetVariable((CHAR16*)VariableName, &Guid, Attributes, StrSize(Buffer)-sizeof(CHAR16), Buffer); - if (EFI_ERROR(Status)) { - ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SETVAR_ERROR_SET), gShellDebug1HiiHandle, &Guid, VariableName, Status); - ShellStatus = SHELL_ACCESS_DENIED; + if (Buffer == NULL) { + ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_OUT_MEM), gShellDebug1HiiHandle); + ShellStatus = SHELL_OUT_OF_RESOURCES; } else { - ASSERT(ShellStatus == SHELL_SUCCESS); + UnicodeSPrint(Buffer, StrSize(Data), L"%s", Data); + ((CHAR16*)Buffer)[StrLen(Buffer)-1] = CHAR_NULL; + + Status = gRT->SetVariable((CHAR16*)VariableName, &Guid, Attributes, StrSize(Buffer)-sizeof(CHAR16), Buffer); + if (EFI_ERROR(Status)) { + ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_SETVAR_ERROR_SET), gShellDebug1HiiHandle, &Guid, VariableName, Status); + ShellStatus = SHELL_ACCESS_DENIED; + } else { + ASSERT(ShellStatus == SHELL_SUCCESS); + } } } else if (StrnCmp(Data, L"--", 2) == 0) { // -- cgit v1.2.3