diff options
author | jcarsey <jcarsey@6f19259b-4bc3-4df7-8a09-765794883524> | 2011-03-30 19:33:03 +0000 |
---|---|---|
committer | jcarsey <jcarsey@6f19259b-4bc3-4df7-8a09-765794883524> | 2011-03-30 19:33:03 +0000 |
commit | 33c031ee2092282a069ce07d30202082ceaf61fe (patch) | |
tree | af76c06a5c4f476e9dfe23096ff2bc0295beaee1 /ShellPkg/Library/UefiShellLevel2CommandsLib | |
parent | 6b825919f1c16b07b5cac7fc5e298fbeb530d888 (diff) | |
download | edk2-33c031ee2092282a069ce07d30202082ceaf61fe.zip edk2-33c031ee2092282a069ce07d30202082ceaf61fe.tar.gz edk2-33c031ee2092282a069ce07d30202082ceaf61fe.tar.bz2 |
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
Diffstat (limited to 'ShellPkg/Library/UefiShellLevel2CommandsLib')
-rw-r--r-- | ShellPkg/Library/UefiShellLevel2CommandsLib/Map.c | 13 | ||||
-rw-r--r-- | ShellPkg/Library/UefiShellLevel2CommandsLib/TimeDate.c | 8 | ||||
-rw-r--r-- | ShellPkg/Library/UefiShellLevel2CommandsLib/Vol.c | 2 |
3 files changed, 17 insertions, 6 deletions
diff --git a/ShellPkg/Library/UefiShellLevel2CommandsLib/Map.c b/ShellPkg/Library/UefiShellLevel2CommandsLib/Map.c index 2b608a0..e7d19c9 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 115013a..780b39e 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 e9cd0d0..53b7770 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);
|