summaryrefslogtreecommitdiff
path: root/MdePkg/Library/BaseLib/String.c
diff options
context:
space:
mode:
authorqwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524>2007-02-13 01:47:44 +0000
committerqwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524>2007-02-13 01:47:44 +0000
commit6a352324b99bf3c5e5b221781e9926c81c311748 (patch)
treed67afa1fa88375cdab3cd5ec11a6c5fe245c8a84 /MdePkg/Library/BaseLib/String.c
parente8a5c66f4b82234a812b7c9fef77ed6b96868c66 (diff)
downloadedk2-platforms-6a352324b99bf3c5e5b221781e9926c81c311748.tar.xz
Update all String related functions in BaseLib for this change introduced in Mde Library Spec 0.60e:
"Updated all functions that take pointers to Unicode strings as parameters to ASSERT() if the pointer is not aligned in a 16-bit boundary." git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2375 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'MdePkg/Library/BaseLib/String.c')
-rw-r--r--MdePkg/Library/BaseLib/String.c28
1 files changed, 23 insertions, 5 deletions
diff --git a/MdePkg/Library/BaseLib/String.c b/MdePkg/Library/BaseLib/String.c
index fefadc4337..3236f4cfa6 100644
--- a/MdePkg/Library/BaseLib/String.c
+++ b/MdePkg/Library/BaseLib/String.c
@@ -25,7 +25,9 @@
overlap, then the results are undefined.
If Destination is NULL, then ASSERT().
+ If Destination is not aligned on a 16-bit boundary, then ASSERT().
If Source is NULL, then ASSERT().
+ If Source is not aligned on a 16-bit boundary, then ASSERT().
If Source and Destination overlap, then ASSERT().
If PcdMaximumUnicodeStringLength is not zero, and Source contains more than
PcdMaximumUnicodeStringLength Unicode characters not including the
@@ -50,6 +52,7 @@ StrCpy (
// Destination cannot be NULL
//
ASSERT (Destination != NULL);
+ ASSERT (((UINTN) Destination & 0x01) == 0);
//
// Destination and source cannot overlap
@@ -78,8 +81,10 @@ StrCpy (
characters. If Source and Destination overlap, then the results are
undefined.
- If Destination is NULL, then ASSERT().
- If Source is NULL, then ASSERT().
+ If Length > 0 and Destination is NULL, then ASSERT().
+ If Length > 0 and Destination is not aligned on a 16-bit boundary, then ASSERT().
+ If Length > 0 and Source is NULL, then ASSERT().
+ If Length > 0 and Source is not aligned on a 16-bit bounadry, then ASSERT().
If Source and Destination overlap, then ASSERT().
If PcdMaximumUnicodeStringLength is not zero, and Source contains more than
PcdMaximumUnicodeStringLength Unicode characters not including the
@@ -110,6 +115,7 @@ StrnCpy (
// Destination cannot be NULL if Length is not zero
//
ASSERT (Destination != NULL);
+ ASSERT (((UINTN) Destination & 0x01) == 0);
//
// Destination and source cannot overlap
@@ -136,6 +142,7 @@ StrnCpy (
Unicode string specified by String.
If String is NULL, then ASSERT().
+ If String is not aligned on a 16-bit boundary, then ASSERT().
If PcdMaximumUnicodeStringLength is not zero, and String contains more than
PcdMaximumUnicodeStringLength Unicode characters not including the
Null-terminator, then ASSERT().
@@ -154,6 +161,7 @@ StrLen (
UINTN Length;
ASSERT (String != NULL);
+ ASSERT (((UINTN) String & 0x01) == 0);
for (Length = 0; *String != L'\0'; String++, Length++) {
//
@@ -175,6 +183,7 @@ StrLen (
string specified by String.
If String is NULL, then ASSERT().
+ If String is not aligned on a 16-bit boundary, then ASSERT().
If PcdMaximumUnicodeStringLength is not zero, and String contains more than
PcdMaximumUnicodeStringLength Unicode characters not including the
Null-terminator, then ASSERT().
@@ -204,7 +213,9 @@ StrSize (
mismatched Unicode character in FirstString.
If FirstString is NULL, then ASSERT().
+ If FirstString is not aligned on a 16-bit boundary, then ASSERT().
If SecondString is NULL, then ASSERT().
+ If SecondString is not aligned on a 16-bit boundary, then ASSERT().
If PcdMaximumUnicodeStringLength is not zero, and FirstString contains more
than PcdMaximumUnicodeStringLength Unicode characters not including the
Null-terminator, then ASSERT().
@@ -250,8 +261,10 @@ StrCmp (
value returned is the first mismatched Unicode character in SecondString
subtracted from the first mismatched Unicode character in FirstString.
- If FirstString is NULL, then ASSERT().
- If SecondString is NULL, then ASSERT().
+ If Length > 0 and FirstString is NULL, then ASSERT().
+ If Length > 0 and FirstString is not aligned on a 16-bit bounadary, then ASSERT().
+ If Length > 0 and SecondString is NULL, then ASSERT().
+ If Length > 0 and SecondString is not aligned on a 16-bit bounadary, then ASSERT().
If PcdMaximumUnicodeStringLength is not zero, and FirstString contains more
than PcdMaximumUnicodeStringLength Unicode characters not including the
Null-terminator, then ASSERT().
@@ -358,7 +371,9 @@ StrCat (
the results are undefined.
If Destination is NULL, then ASSERT().
- If Source is NULL, then ASSERT().
+ If Length > 0 and Destination is not aligned on a 16-bit boundary, then ASSERT().
+ If Length > 0 and Source is NULL, then ASSERT().
+ If Length > 0 and Source is not aligned on a 16-bit boundary, then ASSERT().
If Source and Destination overlap, then ASSERT().
If PcdMaximumUnicodeStringLength is not zero, and Destination contains more
than PcdMaximumUnicodeStringLength Unicode characters not including the
@@ -789,6 +804,7 @@ StrHexToUintn (
UINTN Result;
ASSERT (String != NULL);
+ ASSERT (((UINTN) String & 0x01) == 0);
ASSERT (StrLen (String) < PcdGet32 (PcdMaximumUnicodeStringLength));
//
@@ -880,6 +896,7 @@ StrHexToUint64 (
UINT64 Result;
ASSERT (String != NULL);
+ ASSERT (((UINTN) String & 0x01) == 0);
ASSERT (StrLen (String) < PcdGet32 (PcdMaximumUnicodeStringLength));
//
@@ -1017,6 +1034,7 @@ UnicodeStrToAsciiStr (
{
ASSERT (Destination != NULL);
ASSERT (Source != NULL);
+ ASSERT (((UINTN) Source & 0x01) == 0);
//
// Source and Destination should not overlap