Update all String related functions in BaseLib for this change introduced in Mde...
authorqwang12 <qwang12@de2fecce-e211-0410-80a6-f3fac2684e05>
Tue, 13 Feb 2007 01:47:44 +0000 (01:47 +0000)
committerqwang12 <qwang12@de2fecce-e211-0410-80a6-f3fac2684e05>
Tue, 13 Feb 2007 01:47:44 +0000 (01:47 +0000)
"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.tianocore.org/svn/edk2/trunk@2375 de2fecce-e211-0410-80a6-f3fac2684e05

edk2/MdePkg/Include/Library/BaseLib.h
edk2/MdePkg/Library/BaseLib/BaseLib.msa
edk2/MdePkg/Library/BaseLib/String.c

index e1d79e3..bca5b73 100644 (file)
@@ -139,7 +139,9 @@ typedef struct {
   overlap, then the results are undefined.
 
   If Destination is NULL, then ASSERT().
   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 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
   If Source and Destination overlap, then ASSERT().
   If PcdMaximumUnicodeStringLength is not zero, and Source contains more than
   PcdMaximumUnicodeStringLength Unicode characters not including the
@@ -170,8 +172,10 @@ StrCpy (
   characters. If Source and Destination overlap, then the results are
   undefined.
 
   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
   If Source and Destination overlap, then ASSERT().
   If PcdMaximumUnicodeStringLength is not zero, and Source contains more than
   PcdMaximumUnicodeStringLength Unicode characters not including the
@@ -198,6 +202,7 @@ StrnCpy (
   Unicode string specified by String.
 
   If String is NULL, then ASSERT().
   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().
   If PcdMaximumUnicodeStringLength is not zero, and String contains more than
   PcdMaximumUnicodeStringLength Unicode characters not including the
   Null-terminator, then ASSERT().
@@ -220,6 +225,7 @@ StrLen (
   string specified by String.
 
   If String is NULL, then ASSERT().
   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().
   If PcdMaximumUnicodeStringLength is not zero, and String contains more than
   PcdMaximumUnicodeStringLength Unicode characters not including the
   Null-terminator, then ASSERT().
@@ -245,7 +251,9 @@ StrSize (
   mismatched Unicode character in FirstString.
 
   If FirstString is NULL, then ASSERT().
   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 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().
   If PcdMaximumUnicodeStringLength is not zero, and FirstString contains more
   than PcdMaximumUnicodeStringLength Unicode characters not including the
   Null-terminator, then ASSERT().
@@ -277,8 +285,10 @@ StrCmp (
   value returned is the first mismatched Unicode character in SecondString
   subtracted from the first mismatched Unicode character in FirstString.
 
   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().
   If PcdMaximumUnicodeStringLength is not zero, and FirstString contains more
   than PcdMaximumUnicodeStringLength Unicode characters not including the
   Null-terminator, then ASSERT().
@@ -312,7 +322,9 @@ StrnCmp (
   results are undefined.
 
   If Destination is NULL, then ASSERT().
   results are undefined.
 
   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 PcdMaximumUnicodeStringLength is not zero, and Destination contains more
   than PcdMaximumUnicodeStringLength Unicode characters not including the
   If Source and Destination overlap, then ASSERT().
   If PcdMaximumUnicodeStringLength is not zero, and Destination contains more
   than PcdMaximumUnicodeStringLength Unicode characters not including the
@@ -351,7 +363,9 @@ StrCat (
   the results are undefined.
 
   If Destination is NULL, then ASSERT().
   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
   If Source and Destination overlap, then ASSERT().
   If PcdMaximumUnicodeStringLength is not zero, and Destination contains more
   than PcdMaximumUnicodeStringLength Unicode characters not including the
@@ -588,6 +602,7 @@ StrHexToUint64 (
   
   If Destination is NULL, then ASSERT().
   If Source is NULL, then ASSERT().
   
   If Destination 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 PcdMaximumUnicodeStringLength is not zero, and Source contains 
   If Source and Destination overlap, then ASSERT().
   
   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
   ASCII string specified by String.
 
   This function returns the number of ASCII characters in the Null-terminated
   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
   PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator,
   then ASSERT().
   If PcdMaximumAsciiStringLength is not zero and String contains more than
   PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator,
   then ASSERT().
@@ -792,8 +808,8 @@ AsciiStriCmp (
   is the first mismatched ASCII character in SecondString subtracted from the
   first mismatched ASCII character in FirstString.
 
   is the first mismatched ASCII character in SecondString subtracted from the
   first mismatched ASCII 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 SecondString is NULL, then ASSERT().
   If PcdMaximumAsciiStringLength is not zero and FirstString contains more than
   PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator,
   then ASSERT().
   If PcdMaximumAsciiStringLength is not zero and FirstString contains more than
   PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator,
   then ASSERT().
@@ -861,8 +877,8 @@ AsciiStrCat (
   Destination is returned unmodified. If Source and Destination overlap, then
   the results are undefined.
 
   Destination is returned unmodified. 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 Source is NULL, then ASSERT().
   If Source and Destination overlap, then ASSERT().
   If PcdMaximumAsciiStringLength is not zero, and Destination contains more than
   PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator,
   If Source and Destination overlap, then ASSERT().
   If PcdMaximumAsciiStringLength is not zero, and Destination contains more than
   PcdMaximumAsciiStringLength ASCII characters not including the Null-terminator,
index 7e4c870..fa8e8ed 100644 (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">
   <MsaHeader>
     <ModuleName>BaseLib</ModuleName>
 <ModuleSurfaceArea xmlns="http://www.TianoCore.org/2006/Edk2.0">
   <MsaHeader>
     <ModuleName>BaseLib</ModuleName>
index fefadc4..3236f4c 100644 (file)
@@ -25,7 +25,9 @@
   overlap, then the results are undefined.
 
   If Destination is NULL, then ASSERT().
   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 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 
   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);
   // Destination cannot be 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
   undefined.
 
   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 
   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);
   // Destination cannot be NULL if Length is not zero
   //
   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.
 
   If String is NULL, then ASSERT().
   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().
   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);
   UINTN                             Length;
 
   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.
 
   If String is NULL, then ASSERT().
   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().
   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().
   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 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().
   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.
 
   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().
   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().
   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
   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);
   UINTN     Result;
 
   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;
 
   ASSERT (String != NULL);
   UINT64    Result;
 
   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 (Source != NULL);
 {
   ASSERT (Destination != NULL);
   ASSERT (Source != NULL);
+  ASSERT (((UINTN) Source & 0x01) == 0);
 
   //
   // Source and Destination should not overlap
 
   //
   // Source and Destination should not overlap