summaryrefslogtreecommitdiff
path: root/ShellPkg/Library/UefiShellLevel2CommandsLib
diff options
context:
space:
mode:
Diffstat (limited to 'ShellPkg/Library/UefiShellLevel2CommandsLib')
-rw-r--r--ShellPkg/Library/UefiShellLevel2CommandsLib/Map.c15
-rw-r--r--ShellPkg/Library/UefiShellLevel2CommandsLib/Rm.c8
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;