diff options
-rw-r--r-- | ShellPkg/Library/UefiShellLevel2CommandsLib/Map.c | 15 | ||||
-rw-r--r-- | ShellPkg/Library/UefiShellLevel2CommandsLib/Rm.c | 8 |
2 files changed, 11 insertions, 12 deletions
diff --git a/ShellPkg/Library/UefiShellLevel2CommandsLib/Map.c b/ShellPkg/Library/UefiShellLevel2CommandsLib/Map.c index 5329be4192..ec204c30bc 100644 --- a/ShellPkg/Library/UefiShellLevel2CommandsLib/Map.c +++ b/ShellPkg/Library/UefiShellLevel2CommandsLib/Map.c @@ -228,13 +228,12 @@ MappingListHasType( // specific has priority
//
if (Specific != NULL) {
- NewSpecific = AllocateZeroPool(StrSize(Specific) + sizeof(CHAR16));
+ NewSpecific = AllocateCopyPool(StrSize(Specific) + sizeof(CHAR16), Specific);
if (NewSpecific == NULL){
return FALSE;
}
- StrCpy(NewSpecific, Specific);
if (NewSpecific[StrLen(NewSpecific)-1] != L':') {
- StrCat(NewSpecific, L":");
+ StrnCat(NewSpecific, L":", 2);
}
if (SearchList(MapList, NewSpecific, NULL, TRUE, FALSE, L";")) {
@@ -877,13 +876,12 @@ AddMappingFromMapping( EFI_STATUS Status;
CHAR16 *NewSName;
- NewSName = AllocateZeroPool(StrSize(SName) + sizeof(CHAR16));
+ NewSName = AllocateCopyPool(StrSize(SName) + sizeof(CHAR16), SName);
if (NewSName == NULL) {
return (SHELL_OUT_OF_RESOURCES);
}
- StrCpy(NewSName, SName);
if (NewSName[StrLen(NewSName)-1] != L':') {
- StrCat(NewSName, L":");
+ StrnCat(NewSName, L":", 2);
}
if (!IsNumberLetterOnly(NewSName, StrLen(NewSName)-1)) {
@@ -930,13 +928,12 @@ AddMappingFromHandle( EFI_STATUS Status;
CHAR16 *NewSName;
- NewSName = AllocateZeroPool(StrSize(SName) + sizeof(CHAR16));
+ NewSName = AllocateCopyPool(StrSize(SName) + sizeof(CHAR16), SName);
if (NewSName == NULL) {
return (SHELL_OUT_OF_RESOURCES);
}
- StrCpy(NewSName, SName);
if (NewSName[StrLen(NewSName)-1] != L':') {
- StrCat(NewSName, L":");
+ StrnCat(NewSName, L":", 2);
}
if (!IsNumberLetterOnly(NewSName, StrLen(NewSName)-1)) {
diff --git a/ShellPkg/Library/UefiShellLevel2CommandsLib/Rm.c b/ShellPkg/Library/UefiShellLevel2CommandsLib/Rm.c index a661b450e9..6cc5dcf691 100644 --- a/ShellPkg/Library/UefiShellLevel2CommandsLib/Rm.c +++ b/ShellPkg/Library/UefiShellLevel2CommandsLib/Rm.c @@ -77,6 +77,7 @@ CascadeDelete( EFI_STATUS Status;
SHELL_PROMPT_RESPONSE *Resp;
CHAR16 *TempName;
+ UINTN NewSize;
Resp = NULL;
ShellStatus = SHELL_SUCCESS;
@@ -125,13 +126,14 @@ CascadeDelete( //
// Update the node filename to have full path with file system identifier
//
- TempName = AllocateZeroPool(StrSize(Node->FullName) + StrSize(Node2->FullName));
+ NewSize = StrSize(Node->FullName) + StrSize(Node2->FullName);
+ TempName = AllocateZeroPool(NewSize);
if (TempName == NULL) {
ShellStatus = SHELL_OUT_OF_RESOURCES;
} else {
- StrCpy(TempName, Node->FullName);
+ StrnCpy(TempName, Node->FullName, NewSize/sizeof(CHAR16) -1);
TempName[StrStr(TempName, L":")+1-TempName] = CHAR_NULL;
- StrCat(TempName, Node2->FullName);
+ StrnCat(TempName, Node2->FullName, NewSize/sizeof(CHAR16) -1 - StrLen(TempName));
FreePool((VOID*)Node2->FullName);
Node2->FullName = TempName;
|