diff options
author | Hao Wu <hao.a.wu@intel.com> | 2015-07-10 01:08:05 +0000 |
---|---|---|
committer | hwu1225 <hwu1225@Edk2> | 2015-07-10 01:08:05 +0000 |
commit | 4129b837ae45db17c14b94f3a016915901443b93 (patch) | |
tree | dbc35b3a4fb03fe9504fa8ef3fdbce9351abba7d | |
parent | 28e80befa4fe0edd7cce876e991fed912f0f2795 (diff) | |
download | edk2-4129b837ae45db17c14b94f3a016915901443b93.tar.gz edk2-4129b837ae45db17c14b94f3a016915901443b93.tar.bz2 edk2-4129b837ae45db17c14b94f3a016915901443b93.zip |
IntelFrameworkPkg FrameworkUefiLib: Fix ASSERT in CatVSPrint
This commit will resolve issue brought by r17740.
BufferToReturn = AllocateCopyPool(SizeRequired, String);
The above using of AllocateCopyPool() will cause ASSERT if 'String' is
NULL. Therefore, proper check for 'String' is needed.
The above using of AllocateCopyPool() will read contents out of the scope
of 'String'. Potential risk for 'String' allocated at the boundary of
memory region.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17906 6f19259b-4bc3-4df7-8a09-765794883524
-rw-r--r-- | IntelFrameworkPkg/Library/FrameworkUefiLib/UefiLibPrint.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/IntelFrameworkPkg/Library/FrameworkUefiLib/UefiLibPrint.c b/IntelFrameworkPkg/Library/FrameworkUefiLib/UefiLibPrint.c index 9a9503e030..2570ff4db9 100644 --- a/IntelFrameworkPkg/Library/FrameworkUefiLib/UefiLibPrint.c +++ b/IntelFrameworkPkg/Library/FrameworkUefiLib/UefiLibPrint.c @@ -754,10 +754,16 @@ CatVSPrint ( SizeRequired = sizeof(CHAR16) + (CharactersRequired * sizeof(CHAR16));
}
- BufferToReturn = AllocateCopyPool(SizeRequired, String);
+ BufferToReturn = AllocatePool(SizeRequired);
if (BufferToReturn == NULL) {
return NULL;
+ } else {
+ BufferToReturn[0] = L'\0';
+ }
+
+ if (String != NULL) {
+ StrCpyS(BufferToReturn, SizeRequired, String);
}
UnicodeVSPrint(BufferToReturn + StrLen(BufferToReturn), (CharactersRequired+1) * sizeof(CHAR16), FormatString, Marker);
|