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 --- ShellPkg/Library/UefiShellLevel2CommandsLib/Map.c | 13 +++++++++++-- ShellPkg/Library/UefiShellLevel2CommandsLib/TimeDate.c | 8 ++++---- ShellPkg/Library/UefiShellLevel2CommandsLib/Vol.c | 2 ++ 3 files changed, 17 insertions(+), 6 deletions(-) (limited to 'ShellPkg/Library/UefiShellLevel2CommandsLib') diff --git a/ShellPkg/Library/UefiShellLevel2CommandsLib/Map.c b/ShellPkg/Library/UefiShellLevel2CommandsLib/Map.c index 2b608a02cf..e7d19c9bed 100644 --- a/ShellPkg/Library/UefiShellLevel2CommandsLib/Map.c +++ b/ShellPkg/Library/UefiShellLevel2CommandsLib/Map.c @@ -330,6 +330,9 @@ MappingListHasType( // if (Specific != NULL) { NewSpecific = AllocateZeroPool(StrSize(Specific) + sizeof(CHAR16)); + if (NewSpecific == NULL){ + return FALSE; + } StrCpy(NewSpecific, Specific); if (NewSpecific[StrLen(NewSpecific)-1] != L':') { StrCat(NewSpecific, L":"); @@ -609,7 +612,7 @@ PerformMappingDisplay( // Get the map name(s) for each one. // for ( LoopVar = 0, Found = FALSE - ; LoopVar < (BufferSize / sizeof(EFI_HANDLE)) + ; LoopVar < (BufferSize / sizeof(EFI_HANDLE)) && HandleBuffer != NULL ; LoopVar ++ ){ Status = PerformSingleMappingDisplay( @@ -635,7 +638,7 @@ PerformMappingDisplay( &BufferSize, HandleBuffer); if (Status == EFI_BUFFER_TOO_SMALL) { - FreePool(HandleBuffer); + SHELL_FREE_NON_NULL(HandleBuffer); HandleBuffer = AllocateZeroPool(BufferSize); if (HandleBuffer == NULL) { return (SHELL_OUT_OF_RESOURCES); @@ -897,6 +900,9 @@ AddMappingFromMapping( CHAR16 *NewSName; NewSName = AllocateZeroPool(StrSize(SName) + sizeof(CHAR16)); + if (NewSName == NULL) { + return (SHELL_OUT_OF_RESOURCES); + } StrCpy(NewSName, SName); if (NewSName[StrLen(NewSName)-1] != L':') { StrCat(NewSName, L":"); @@ -947,6 +953,9 @@ AddMappingFromHandle( CHAR16 *NewSName; NewSName = AllocateZeroPool(StrSize(SName) + sizeof(CHAR16)); + if (NewSName == NULL) { + return (SHELL_OUT_OF_RESOURCES); + } StrCpy(NewSName, SName); if (NewSName[StrLen(NewSName)-1] != L':') { StrCat(NewSName, L":"); diff --git a/ShellPkg/Library/UefiShellLevel2CommandsLib/TimeDate.c b/ShellPkg/Library/UefiShellLevel2CommandsLib/TimeDate.c index 115013a1e3..780b39e2fd 100644 --- a/ShellPkg/Library/UefiShellLevel2CommandsLib/TimeDate.c +++ b/ShellPkg/Library/UefiShellLevel2CommandsLib/TimeDate.c @@ -124,7 +124,7 @@ CheckAndSetDate ( if (Walker1 != NULL) { Walker = Walker1 + 1; } - Walker1 = StrStr(Walker, L"/"); + Walker1 = Walker!=NULL?StrStr(Walker, L"/"):NULL; if (Walker1 != NULL && *Walker1 == L'/') { *Walker1 = CHAR_NULL; } @@ -133,7 +133,7 @@ CheckAndSetDate ( if (Walker1 != NULL) { Walker = Walker1 + 1; } - Walker1 = StrStr(Walker, L"/"); + Walker1 = Walker!=NULL?StrStr(Walker, L"/"):NULL; if (Walker1 != NULL && *Walker1 == L'/') { *Walker1 = CHAR_NULL; } @@ -312,7 +312,7 @@ CheckAndSetTime ( TheTime.Hour = 0xFF; TheTime.Minute = 0xFF; - Walker2 = StrStr(Walker1, L":"); + Walker2 = Walker1!=NULL?StrStr(Walker1, L":"):NULL; if (Walker2 != NULL && *Walker2 == L':') { *Walker2 = CHAR_NULL; } @@ -320,7 +320,7 @@ CheckAndSetTime ( if (Walker2 != NULL) { Walker1 = Walker2 + 1; } - Walker2 = StrStr(Walker1, L":"); + Walker2 = Walker1!=NULL?StrStr(Walker1, L":"):NULL; if (Walker2 != NULL && *Walker2 == L':') { *Walker2 = CHAR_NULL; } diff --git a/ShellPkg/Library/UefiShellLevel2CommandsLib/Vol.c b/ShellPkg/Library/UefiShellLevel2CommandsLib/Vol.c index e9cd0d0982..53b7770dfe 100644 --- a/ShellPkg/Library/UefiShellLevel2CommandsLib/Vol.c +++ b/ShellPkg/Library/UefiShellLevel2CommandsLib/Vol.c @@ -97,6 +97,8 @@ HandleVol( SysInfo); } + ASSERT(SysInfo != NULL); + if (Delete) { StrCpy ((CHAR16 *) SysInfo->VolumeLabel, L""); SysInfo->Size = SIZE_OF_EFI_FILE_SYSTEM_INFO + StrSize(SysInfo->VolumeLabel); -- cgit v1.2.3