MdePkg UefiLib: Use safe string functions

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
Reviewed-by: Jaben Carsey <jaben.carsey@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17742 6f19259b-4bc3-4df7-8a09-765794883524
diff --git a/MdePkg/Library/UefiLib/Console.c b/MdePkg/Library/UefiLib/Console.c
index 73f9915..ecaf425 100644
--- a/MdePkg/Library/UefiLib/Console.c
+++ b/MdePkg/Library/UefiLib/Console.c
@@ -1,7 +1,7 @@
 /** @file

   This module provide help function for displaying unicode string.

 

-  Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>

+  Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>

   This program and the accompanying materials                          

   are licensed and made available under the terms and conditions of the BSD License         

   which accompanies this distribution.  The full text of the license may be found at        

@@ -517,8 +517,8 @@
       UefiLibGetStringWidth (String, TRUE, MaxLength, &Length);

       TmpString = AllocateZeroPool ((Length + 1) * sizeof (CHAR16));

       ASSERT (TmpString != NULL);

-      StrnCpy(TmpString, String, Length - 3);

-      StrCat (TmpString, L"...");

+      StrnCpyS (TmpString, Length + 1, String, Length - 3);

+      StrCatS (TmpString, Length + 1, L"...");

 

       ConOut->SetCursorPosition (ConOut, Column + 1, Row++);

       ConOut->OutputString (ConOut, TmpString);

diff --git a/MdePkg/Library/UefiLib/UefiLibPrint.c b/MdePkg/Library/UefiLib/UefiLibPrint.c
index 1bf6d26..cc41eb0 100644
--- a/MdePkg/Library/UefiLib/UefiLibPrint.c
+++ b/MdePkg/Library/UefiLib/UefiLibPrint.c
@@ -2,7 +2,7 @@
   Mde UEFI library API implementation.

   Print to StdErr or ConOut defined in EFI_SYSTEM_TABLE

 

-  Copyright (c) 2007 - 2012, Intel Corporation. All rights reserved.<BR>

+  Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>

   This program and the accompanying materials

   are licensed and made available under the terms and conditions of the BSD License

   which accompanies this distribution.  The full text of the license may be found at

@@ -754,16 +754,12 @@
     SizeRequired = sizeof(CHAR16) + (CharactersRequired * sizeof(CHAR16));

   }

 

-  BufferToReturn = AllocateZeroPool(SizeRequired);

+  BufferToReturn = AllocateCopyPool(SizeRequired, String);

 

   if (BufferToReturn == NULL) {

     return NULL;

   }

 

-  if (String != NULL) {

-    StrCpy(BufferToReturn, String);

-  }

-

   UnicodeVSPrint(BufferToReturn + StrLen(BufferToReturn), (CharactersRequired+1) * sizeof(CHAR16), FormatString, Marker);

 

   ASSERT(StrSize(BufferToReturn)==SizeRequired);