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
This commit is contained in:
qwang12 2007-02-13 01:47:44 +00:00
parent e8a5c66f4b
commit 6a352324b9
3 changed files with 49 additions and 25 deletions

View File

@ -139,7 +139,9 @@ typedef struct {
overlap, then the results are undefined. overlap, then the results are undefined.
If Destination is NULL, then ASSERT(). 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 NULL, then ASSERT().
If Source is not aligned on a 16-bit boundary, then ASSERT().
If Source and Destination overlap, then ASSERT(). If Source and Destination overlap, then ASSERT().
If PcdMaximumUnicodeStringLength is not zero, and Source contains more than If PcdMaximumUnicodeStringLength is not zero, and Source contains more than
PcdMaximumUnicodeStringLength Unicode characters not including the PcdMaximumUnicodeStringLength Unicode characters not including the
@ -170,8 +172,10 @@ StrCpy (
characters. If Source and Destination overlap, then the results are characters. If Source and Destination overlap, then the results are
undefined. undefined.
If Destination is NULL, then ASSERT(). If Length > 0 and 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 bounadry, then ASSERT().
If Source and Destination overlap, then ASSERT(). If Source and Destination overlap, then ASSERT().
If PcdMaximumUnicodeStringLength is not zero, and Source contains more than If PcdMaximumUnicodeStringLength is not zero, and Source contains more than
PcdMaximumUnicodeStringLength Unicode characters not including the PcdMaximumUnicodeStringLength Unicode characters not including the
@ -198,6 +202,7 @@ StrnCpy (
Unicode string specified by String. Unicode string specified by String.
If String is NULL, then ASSERT(). 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 If PcdMaximumUnicodeStringLength is not zero, and String contains more than
PcdMaximumUnicodeStringLength Unicode characters not including the PcdMaximumUnicodeStringLength Unicode characters not including the
Null-terminator, then ASSERT(). Null-terminator, then ASSERT().
@ -220,6 +225,7 @@ StrLen (
string specified by String. string specified by String.
If String is NULL, then ASSERT(). 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 If PcdMaximumUnicodeStringLength is not zero, and String contains more than
PcdMaximumUnicodeStringLength Unicode characters not including the PcdMaximumUnicodeStringLength Unicode characters not including the
Null-terminator, then ASSERT(). Null-terminator, then ASSERT().
@ -245,7 +251,9 @@ StrSize (
mismatched Unicode character in FirstString. mismatched Unicode character in FirstString.
If FirstString is NULL, then ASSERT(). 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 NULL, then ASSERT().
If SecondString is not aligned on a 16-bit boundary, then ASSERT().
If PcdMaximumUnicodeStringLength is not zero, and FirstString contains more If PcdMaximumUnicodeStringLength is not zero, and FirstString contains more
than PcdMaximumUnicodeStringLength Unicode characters not including the than PcdMaximumUnicodeStringLength Unicode characters not including the
Null-terminator, then ASSERT(). Null-terminator, then ASSERT().
@ -277,8 +285,10 @@ StrCmp (
value returned is the first mismatched Unicode character in SecondString value returned is the first mismatched Unicode character in SecondString
subtracted from the first mismatched Unicode character in FirstString. subtracted from the first mismatched Unicode character in FirstString.
If FirstString is NULL, then ASSERT(). If Length > 0 and FirstString is NULL, then ASSERT().
If SecondString 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 If PcdMaximumUnicodeStringLength is not zero, and FirstString contains more
than PcdMaximumUnicodeStringLength Unicode characters not including the than PcdMaximumUnicodeStringLength Unicode characters not including the
Null-terminator, then ASSERT(). Null-terminator, then ASSERT().
@ -312,7 +322,9 @@ StrnCmp (
results are undefined. results are undefined.
If Destination is NULL, then ASSERT(). If Destination is NULL, then ASSERT().
If Destination is not aligned on a 16-bit bounadary, then ASSERT().
If Source is NULL, then ASSERT(). If Source is NULL, then ASSERT().
If Source is not aligned on a 16-bit bounadary, then ASSERT().
If Source and Destination overlap, then ASSERT(). If Source and Destination overlap, then ASSERT().
If PcdMaximumUnicodeStringLength is not zero, and Destination contains more If PcdMaximumUnicodeStringLength is not zero, and Destination contains more
than PcdMaximumUnicodeStringLength Unicode characters not including the than PcdMaximumUnicodeStringLength Unicode characters not including the
@ -351,7 +363,9 @@ StrCat (
the results are undefined. the results are undefined.
If Destination is NULL, then ASSERT(). 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 Source and Destination overlap, then ASSERT().
If PcdMaximumUnicodeStringLength is not zero, and Destination contains more If PcdMaximumUnicodeStringLength is not zero, and Destination contains more
than PcdMaximumUnicodeStringLength Unicode characters not including the than PcdMaximumUnicodeStringLength Unicode characters not including the
@ -588,6 +602,7 @@ StrHexToUint64 (
If Destination is NULL, then ASSERT(). If Destination is NULL, then ASSERT().
If Source is NULL, 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 Source and Destination overlap, then ASSERT().
If PcdMaximumUnicodeStringLength is not zero, and Source contains If PcdMaximumUnicodeStringLength is not zero, and Source contains
@ -677,7 +692,8 @@ AsciiStrnCpy (
This function returns the number of ASCII characters in the Null-terminated This function returns the number of ASCII characters in the Null-terminated
ASCII string specified by String. ASCII string specified by String.
If String is NULL, then ASSERT(). If Length > 0 and Destination is NULL, then ASSERT().
If Length > 0 and Source is NULL, then ASSERT().
If PcdMaximumAsciiStringLength is not zero and String contains more than If PcdMaximumAsciiStringLength is not zero and String contains more than
PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator, PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator,
then ASSERT(). then ASSERT().
@ -792,8 +808,8 @@ AsciiStriCmp (
is the first mismatched ASCII character in SecondString subtracted from the is the first mismatched ASCII character in SecondString subtracted from the
first mismatched ASCII character in FirstString. first mismatched ASCII character in FirstString.
If FirstString is NULL, then ASSERT(). If Length > 0 and FirstString is NULL, then ASSERT().
If SecondString is NULL, then ASSERT(). If Length > 0 and SecondString is NULL, then ASSERT().
If PcdMaximumAsciiStringLength is not zero and FirstString contains more than If PcdMaximumAsciiStringLength is not zero and FirstString contains more than
PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator, PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator,
then ASSERT(). then ASSERT().
@ -861,8 +877,8 @@ AsciiStrCat (
Destination is returned unmodified. If Source and Destination overlap, then Destination is returned unmodified. If Source and Destination overlap, then
the results are undefined. the results are undefined.
If Destination is NULL, then ASSERT(). If Length > 0 and Destination is NULL, then ASSERT().
If Source is NULL, then ASSERT(). If Length > 0 and Source is NULL, then ASSERT().
If Source and Destination overlap, then ASSERT(). If Source and Destination overlap, then ASSERT().
If PcdMaximumAsciiStringLength is not zero, and Destination contains more than If PcdMaximumAsciiStringLength is not zero, and Destination contains more than
PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator, PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator,

View File

@ -1,14 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2006 - 2007, Intel Corporation
All rights reserved. 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
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-->
<ModuleSurfaceArea xmlns="http://www.TianoCore.org/2006/Edk2.0"> <ModuleSurfaceArea xmlns="http://www.TianoCore.org/2006/Edk2.0">
<MsaHeader> <MsaHeader>
<ModuleName>BaseLib</ModuleName> <ModuleName>BaseLib</ModuleName>

View File

@ -25,7 +25,9 @@
overlap, then the results are undefined. overlap, then the results are undefined.
If Destination is NULL, then ASSERT(). 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 NULL, then ASSERT().
If Source is not aligned on a 16-bit boundary, then ASSERT().
If Source and Destination overlap, then ASSERT(). If Source and Destination overlap, then ASSERT().
If PcdMaximumUnicodeStringLength is not zero, and Source contains more than If PcdMaximumUnicodeStringLength is not zero, and Source contains more than
PcdMaximumUnicodeStringLength Unicode characters not including the PcdMaximumUnicodeStringLength Unicode characters not including the
@ -50,6 +52,7 @@ StrCpy (
// Destination cannot be NULL // Destination cannot be NULL
// //
ASSERT (Destination != NULL); ASSERT (Destination != NULL);
ASSERT (((UINTN) Destination & 0x01) == 0);
// //
// Destination and source cannot overlap // Destination and source cannot overlap
@ -78,8 +81,10 @@ StrCpy (
characters. If Source and Destination overlap, then the results are characters. If Source and Destination overlap, then the results are
undefined. undefined.
If Destination is NULL, then ASSERT(). If Length > 0 and 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 bounadry, then ASSERT().
If Source and Destination overlap, then ASSERT(). If Source and Destination overlap, then ASSERT().
If PcdMaximumUnicodeStringLength is not zero, and Source contains more than If PcdMaximumUnicodeStringLength is not zero, and Source contains more than
PcdMaximumUnicodeStringLength Unicode characters not including the PcdMaximumUnicodeStringLength Unicode characters not including the
@ -110,6 +115,7 @@ StrnCpy (
// Destination cannot be NULL if Length is not zero // Destination cannot be NULL if Length is not zero
// //
ASSERT (Destination != NULL); ASSERT (Destination != NULL);
ASSERT (((UINTN) Destination & 0x01) == 0);
// //
// Destination and source cannot overlap // Destination and source cannot overlap
@ -136,6 +142,7 @@ StrnCpy (
Unicode string specified by String. Unicode string specified by String.
If String is NULL, then ASSERT(). 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 If PcdMaximumUnicodeStringLength is not zero, and String contains more than
PcdMaximumUnicodeStringLength Unicode characters not including the PcdMaximumUnicodeStringLength Unicode characters not including the
Null-terminator, then ASSERT(). Null-terminator, then ASSERT().
@ -154,6 +161,7 @@ StrLen (
UINTN Length; UINTN Length;
ASSERT (String != NULL); ASSERT (String != NULL);
ASSERT (((UINTN) String & 0x01) == 0);
for (Length = 0; *String != L'\0'; String++, Length++) { for (Length = 0; *String != L'\0'; String++, Length++) {
// //
@ -175,6 +183,7 @@ StrLen (
string specified by String. string specified by String.
If String is NULL, then ASSERT(). 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 If PcdMaximumUnicodeStringLength is not zero, and String contains more than
PcdMaximumUnicodeStringLength Unicode characters not including the PcdMaximumUnicodeStringLength Unicode characters not including the
Null-terminator, then ASSERT(). Null-terminator, then ASSERT().
@ -204,7 +213,9 @@ StrSize (
mismatched Unicode character in FirstString. mismatched Unicode character in FirstString.
If FirstString is NULL, then ASSERT(). 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 NULL, then ASSERT().
If SecondString is not aligned on a 16-bit boundary, then ASSERT().
If PcdMaximumUnicodeStringLength is not zero, and FirstString contains more If PcdMaximumUnicodeStringLength is not zero, and FirstString contains more
than PcdMaximumUnicodeStringLength Unicode characters not including the than PcdMaximumUnicodeStringLength Unicode characters not including the
Null-terminator, then ASSERT(). Null-terminator, then ASSERT().
@ -250,8 +261,10 @@ StrCmp (
value returned is the first mismatched Unicode character in SecondString value returned is the first mismatched Unicode character in SecondString
subtracted from the first mismatched Unicode character in FirstString. subtracted from the first mismatched Unicode character in FirstString.
If FirstString is NULL, then ASSERT(). If Length > 0 and FirstString is NULL, then ASSERT().
If SecondString 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 If PcdMaximumUnicodeStringLength is not zero, and FirstString contains more
than PcdMaximumUnicodeStringLength Unicode characters not including the than PcdMaximumUnicodeStringLength Unicode characters not including the
Null-terminator, then ASSERT(). Null-terminator, then ASSERT().
@ -358,7 +371,9 @@ StrCat (
the results are undefined. the results are undefined.
If Destination is NULL, then ASSERT(). 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 Source and Destination overlap, then ASSERT().
If PcdMaximumUnicodeStringLength is not zero, and Destination contains more If PcdMaximumUnicodeStringLength is not zero, and Destination contains more
than PcdMaximumUnicodeStringLength Unicode characters not including the than PcdMaximumUnicodeStringLength Unicode characters not including the
@ -789,6 +804,7 @@ StrHexToUintn (
UINTN Result; UINTN Result;
ASSERT (String != NULL); ASSERT (String != NULL);
ASSERT (((UINTN) String & 0x01) == 0);
ASSERT (StrLen (String) < PcdGet32 (PcdMaximumUnicodeStringLength)); ASSERT (StrLen (String) < PcdGet32 (PcdMaximumUnicodeStringLength));
// //
@ -880,6 +896,7 @@ StrHexToUint64 (
UINT64 Result; UINT64 Result;
ASSERT (String != NULL); ASSERT (String != NULL);
ASSERT (((UINTN) String & 0x01) == 0);
ASSERT (StrLen (String) < PcdGet32 (PcdMaximumUnicodeStringLength)); ASSERT (StrLen (String) < PcdGet32 (PcdMaximumUnicodeStringLength));
// //
@ -1017,6 +1034,7 @@ UnicodeStrToAsciiStr (
{ {
ASSERT (Destination != NULL); ASSERT (Destination != NULL);
ASSERT (Source != NULL); ASSERT (Source != NULL);
ASSERT (((UINTN) Source & 0x01) == 0);
// //
// Source and Destination should not overlap // Source and Destination should not overlap