diff options
author | qhuang8 <qhuang8@6f19259b-4bc3-4df7-8a09-765794883524> | 2009-12-23 01:50:10 +0000 |
---|---|---|
committer | qhuang8 <qhuang8@6f19259b-4bc3-4df7-8a09-765794883524> | 2009-12-23 01:50:10 +0000 |
commit | 8f635c36ad1059a064c747fd1f0e38814e7e7c29 (patch) | |
tree | 5bb2a15cf307326303d918899a09eeb58af0b87c /MdePkg/Library/BaseLib/String.c | |
parent | 8595f12dc5fde8b43a8bba56f35144d2f3d8405d (diff) | |
download | edk2-platforms-8f635c36ad1059a064c747fd1f0e38814e7e7c29.tar.xz |
Fix a bug in MdePkg BaseLib: StrnCat() and AsciiStrnCat() should NULL terminated the final destination string when Length is equal to the length of Source string
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9588 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'MdePkg/Library/BaseLib/String.c')
-rw-r--r-- | MdePkg/Library/BaseLib/String.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/MdePkg/Library/BaseLib/String.c b/MdePkg/Library/BaseLib/String.c index 31ea36de41..afbad1d4e3 100644 --- a/MdePkg/Library/BaseLib/String.c +++ b/MdePkg/Library/BaseLib/String.c @@ -425,7 +425,11 @@ StrnCat ( IN UINTN Length
)
{
- StrnCpy (Destination + StrLen (Destination), Source, Length);
+ UINTN DestinationLen;
+
+ DestinationLen = StrLen (Destination);
+ StrnCpy (Destination + DestinationLen, Source, Length);
+ Destination[DestinationLen + Length] = L'\0';
//
// Size of the resulting string should never be zero.
@@ -1566,7 +1570,11 @@ AsciiStrnCat ( IN UINTN Length
)
{
- AsciiStrnCpy (Destination + AsciiStrLen (Destination), Source, Length);
+ UINTN DestinationLen;
+
+ DestinationLen = AsciiStrLen (Destination);
+ AsciiStrnCpy (Destination + DestinationLen, Source, Length);
+ Destination[DestinationLen + Length] = '\0';
//
// Size of the resulting string should never be zero.
|