From a3f28ac92c6aa90e91e44d3993378dc38c66841e Mon Sep 17 00:00:00 2001 From: Hao Wu Date: Wed, 5 Aug 2015 02:55:40 +0000 Subject: [PATCH] MdePkg UefiLib: Fix wrong DestMax passed to StrCpyS() The second parameter 'DestMax' of StrCpyS() should be the number of unicode characters, not the size in bytes. Also, code is modified to keep align with the one in IntelFrameworkPkg\Library\FrameworkUefiLib\UefiLibPrint.c. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Hao Wu Reviewed-by: Liming Gao git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18160 6f19259b-4bc3-4df7-8a09-765794883524 --- MdePkg/Library/UefiLib/UefiLibPrint.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/MdePkg/Library/UefiLib/UefiLibPrint.c b/MdePkg/Library/UefiLib/UefiLibPrint.c index 91ce49235b..9f52e7d0ce 100644 --- a/MdePkg/Library/UefiLib/UefiLibPrint.c +++ b/MdePkg/Library/UefiLib/UefiLibPrint.c @@ -754,14 +754,16 @@ CatVSPrint ( SizeRequired = sizeof(CHAR16) + (CharactersRequired * sizeof(CHAR16)); } - BufferToReturn = AllocateZeroPool(SizeRequired); + BufferToReturn = AllocatePool(SizeRequired); if (BufferToReturn == NULL) { return NULL; + } else { + BufferToReturn[0] = L'\0'; } - + if (String != NULL) { - StrCpyS(BufferToReturn, SizeRequired, String); + StrCpyS(BufferToReturn, SizeRequired / sizeof(CHAR16), String); } UnicodeVSPrint(BufferToReturn + StrLen(BufferToReturn), (CharactersRequired+1) * sizeof(CHAR16), FormatString, Marker); -- 2.39.2