<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=koi8-r">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:DengXian;
panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:"\@DengXian";
panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
.MsoChpDefault
{mso-style-type:export-only;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style>
</head>
<body lang="EN-US" link="blue" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal">Reviewed-by: Bret Barkelew <bret.barkelew@microsoft.com></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">- Bret</p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="border:none;padding:0in"><b>From: </b><a href="mailto:vit9696=protonmail.com@groups.io">Vitaly Cheptsov via groups.io</a><br>
<b>Sent: </b>Tuesday, May 19, 2020 10:56 PM<br>
<b>To: </b><a href="mailto:michael.d.kinney@intel.com">Kinney, Michael D</a>; <a href="mailto:lersek@redhat.com">
Laszlo Ersek</a><br>
<b>Cc: </b><a href="mailto:devel@edk2.groups.io">devel@edk2.groups.io</a>; <a href="mailto:afish@apple.com">
Andrew Fish</a>; <a href="mailto:ard.biesheuvel@linaro.org">Ard Biesheuvel</a>; <a href="mailto:Bret.Barkelew@microsoft.com">
Bret Barkelew</a>; <a href="mailto:brian.johnson@hpe.com">Brian J . Johnson</a>; <a href="mailto:chasel.chiu@intel.com">
Chasel Chiu</a>; <a href="mailto:jordan.l.justen@intel.com">Jordan Justen</a>; <a href="mailto:leif@nuviainc.com">
Leif Lindholm</a>; <a href="mailto:liming.gao@intel.com">liming.gao</a>; <a href="mailto:mhaeuser@outlook.de">
Marvin H?user</a>; <a href="mailto:vincent.zimmer@intel.com">Zimmer, Vincent</a>;
<a href="mailto:zhichao.gao@intel.com">Zhichao Gao</a>; <a href="mailto:jiewen.yao@intel.com">
Yao, Jiewen</a><br>
<b>Subject: </b>[EXTERNAL] Re: [edk2-devel] [Patch v8 1/2] MdePkg: Fix SafeString performing assertions on runtime checks</p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Mike,</p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Looks perfect to me. For everyone: the only change from V7 is an addition of DEBUG_VERBOSE message, which can indeed be useful.</p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Best wishes,</p>
<p class="MsoNormal">Vitaly</p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">> 20 ΝΑΡ 2020 Η., Χ 06:01, Michael D Kinney <michael.d.kinney@intel.com> ΞΑΠΙΣΑΜ(Α):</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2054</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> Runtime checks returned via status return code should not work as</p>
<p class="MsoNormal">> assertions to permit parsing not trusted data with SafeString</p>
<p class="MsoNormal">> interfaces. Replace ASSERT() with a DEBUG_VERBOSE message.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> Cc: Andrew Fish <afish@apple.com></p>
<p class="MsoNormal">> Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org></p>
<p class="MsoNormal">> Cc: Bret Barkelew <bret.barkelew@microsoft.com></p>
<p class="MsoNormal">> Cc: Brian J. Johnson <brian.johnson@hpe.com></p>
<p class="MsoNormal">> Cc: Chasel Chiu <chasel.chiu@intel.com></p>
<p class="MsoNormal">> Cc: Jordan Justen <jordan.l.justen@intel.com></p>
<p class="MsoNormal">> Cc: Laszlo Ersek <lersek@redhat.com></p>
<p class="MsoNormal">> Cc: Leif Lindholm <leif@nuviainc.com></p>
<p class="MsoNormal">> Cc: Liming Gao <liming.gao@intel.com></p>
<p class="MsoNormal">> Cc: Marvin H?user <mhaeuser@outlook.de></p>
<p class="MsoNormal">> Cc: Michael D Kinney <michael.d.kinney@intel.com></p>
<p class="MsoNormal">> Cc: Vincent Zimmer <vincent.zimmer@intel.com></p>
<p class="MsoNormal">> Cc: Zhichao Gao <zhichao.gao@intel.com></p>
<p class="MsoNormal">> Cc: Jiewen Yao <jiewen.yao@intel.com></p>
<p class="MsoNormal">> Signed-off-by: Vitaly Cheptsov <vit9696@protonmail.com></p>
<p class="MsoNormal">> ---</p>
<p class="MsoNormal">> MdePkg/Include/Library/BaseLib.h | 111 ---------------------------</p>
<p class="MsoNormal">> MdePkg/Library/BaseLib/SafeString.c | 115 +---------------------------</p>
<p class="MsoNormal">> 2 files changed, 3 insertions(+), 223 deletions(-)</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> diff --git a/MdePkg/Include/Library/BaseLib.h b/MdePkg/Include/Library/BaseLib.h</p>
<p class="MsoNormal">> index b0bbe8cef8..8e7b87cbda 100644</p>
<p class="MsoNormal">> --- a/MdePkg/Include/Library/BaseLib.h</p>
<p class="MsoNormal">> +++ b/MdePkg/Include/Library/BaseLib.h</p>
<p class="MsoNormal">> @@ -216,7 +216,6 @@ StrnSizeS (</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> If Destination is not aligned on a 16-bit boundary, then ASSERT().</p>
<p class="MsoNormal">> If Source is not aligned on a 16-bit boundary, then ASSERT().</p>
<p class="MsoNormal">> - If an error would be returned, then the function will also ASSERT().</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> If an error is returned, then the Destination is unmodified.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> @@ -252,7 +251,6 @@ StrCpyS (</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> If Length > 0 and Destination is not aligned on a 16-bit boundary, then ASSERT().</p>
<p class="MsoNormal">> If Length > 0 and Source is not aligned on a 16-bit boundary, then ASSERT().</p>
<p class="MsoNormal">> - If an error would be returned, then the function will also ASSERT().</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> If an error is returned, then the Destination is unmodified.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> @@ -290,7 +288,6 @@ StrnCpyS (</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> If Destination is not aligned on a 16-bit boundary, then ASSERT().</p>
<p class="MsoNormal">> If Source is not aligned on a 16-bit boundary, then ASSERT().</p>
<p class="MsoNormal">> - If an error would be returned, then the function will also ASSERT().</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> If an error is returned, then the Destination is unmodified.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> @@ -330,7 +327,6 @@ StrCatS (</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> If Destination is not aligned on a 16-bit boundary, then ASSERT().</p>
<p class="MsoNormal">> If Source is not aligned on a 16-bit boundary, then ASSERT().</p>
<p class="MsoNormal">> - If an error would be returned, then the function will also ASSERT().</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> If an error is returned, then the Destination is unmodified.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> @@ -377,12 +373,7 @@ StrnCatS (</p>
<p class="MsoNormal">> be ignored. Then, the function stops at the first character that is a not a</p>
<p class="MsoNormal">> valid decimal character or a Null-terminator, whichever one comes first.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If String is NULL, then ASSERT().</p>
<p class="MsoNormal">> - If Data is NULL, then ASSERT().</p>
<p class="MsoNormal">> If String is not aligned in a 16-bit boundary, then ASSERT().</p>
<p class="MsoNormal">> - If PcdMaximumUnicodeStringLength is not zero, and String contains more than</p>
<p class="MsoNormal">> - PcdMaximumUnicodeStringLength Unicode characters, not including the</p>
<p class="MsoNormal">> - Null-terminator, then ASSERT().</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> If String has no valid decimal digits in the above format, then 0 is stored</p>
<p class="MsoNormal">> at the location pointed to by Data.</p>
<p class="MsoNormal">> @@ -433,12 +424,7 @@ StrDecimalToUintnS (</p>
<p class="MsoNormal">> be ignored. Then, the function stops at the first character that is a not a</p>
<p class="MsoNormal">> valid decimal character or a Null-terminator, whichever one comes first.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If String is NULL, then ASSERT().</p>
<p class="MsoNormal">> - If Data is NULL, then ASSERT().</p>
<p class="MsoNormal">> If String is not aligned in a 16-bit boundary, then ASSERT().</p>
<p class="MsoNormal">> - If PcdMaximumUnicodeStringLength is not zero, and String contains more than</p>
<p class="MsoNormal">> - PcdMaximumUnicodeStringLength Unicode characters, not including the</p>
<p class="MsoNormal">> - Null-terminator, then ASSERT().</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> If String has no valid decimal digits in the above format, then 0 is stored</p>
<p class="MsoNormal">> at the location pointed to by Data.</p>
<p class="MsoNormal">> @@ -494,12 +480,7 @@ StrDecimalToUint64S (</p>
<p class="MsoNormal">> the first character that is a not a valid hexadecimal character or NULL,</p>
<p class="MsoNormal">> whichever one comes first.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If String is NULL, then ASSERT().</p>
<p class="MsoNormal">> - If Data is NULL, then ASSERT().</p>
<p class="MsoNormal">> If String is not aligned in a 16-bit boundary, then ASSERT().</p>
<p class="MsoNormal">> - If PcdMaximumUnicodeStringLength is not zero, and String contains more than</p>
<p class="MsoNormal">> - PcdMaximumUnicodeStringLength Unicode characters, not including the</p>
<p class="MsoNormal">> - Null-terminator, then ASSERT().</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> If String has no valid hexadecimal digits in the above format, then 0 is</p>
<p class="MsoNormal">> stored at the location pointed to by Data.</p>
<p class="MsoNormal">> @@ -555,12 +536,7 @@ StrHexToUintnS (</p>
<p class="MsoNormal">> the first character that is a not a valid hexadecimal character or NULL,</p>
<p class="MsoNormal">> whichever one comes first.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If String is NULL, then ASSERT().</p>
<p class="MsoNormal">> - If Data is NULL, then ASSERT().</p>
<p class="MsoNormal">> If String is not aligned in a 16-bit boundary, then ASSERT().</p>
<p class="MsoNormal">> - If PcdMaximumUnicodeStringLength is not zero, and String contains more than</p>
<p class="MsoNormal">> - PcdMaximumUnicodeStringLength Unicode characters, not including the</p>
<p class="MsoNormal">> - Null-terminator, then ASSERT().</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> If String has no valid hexadecimal digits in the above format, then 0 is</p>
<p class="MsoNormal">> stored at the location pointed to by Data.</p>
<p class="MsoNormal">> @@ -649,8 +625,6 @@ AsciiStrnSizeS (</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> This function is similar as strcpy_s defined in C11.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If an error would be returned, then the function will also ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> If an error is returned, then the Destination is unmodified.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> @param Destination A pointer to a Null-terminated Ascii string.</p>
<p class="MsoNormal">> @@ -683,8 +657,6 @@ AsciiStrCpyS (</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> This function is similar as strncpy_s defined in C11.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If an error would be returned, then the function will also ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> If an error is returned, then the Destination is unmodified.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> @param Destination A pointer to a Null-terminated Ascii string.</p>
<p class="MsoNormal">> @@ -719,8 +691,6 @@ AsciiStrnCpyS (</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> This function is similar as strcat_s defined in C11.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If an error would be returned, then the function will also ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> If an error is returned, then the Destination is unmodified.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> @param Destination A pointer to a Null-terminated Ascii string.</p>
<p class="MsoNormal">> @@ -757,8 +727,6 @@ AsciiStrCatS (</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> This function is similar as strncat_s defined in C11.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If an error would be returned, then the function will also ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> If an error is returned, then the Destination is unmodified.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> @param Destination A pointer to a Null-terminated Ascii string.</p>
<p class="MsoNormal">> @@ -804,12 +772,6 @@ AsciiStrnCatS (</p>
<p class="MsoNormal">> be ignored. Then, the function stops at the first character that is a not a</p>
<p class="MsoNormal">> valid decimal character or a Null-terminator, whichever one comes first.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If String is NULL, then ASSERT().</p>
<p class="MsoNormal">> - If Data is NULL, then ASSERT().</p>
<p class="MsoNormal">> - If PcdMaximumAsciiStringLength is not zero, and String contains more than</p>
<p class="MsoNormal">> - PcdMaximumAsciiStringLength Ascii characters, not including the</p>
<p class="MsoNormal">> - Null-terminator, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> If String has no valid decimal digits in the above format, then 0 is stored</p>
<p class="MsoNormal">> at the location pointed to by Data.</p>
<p class="MsoNormal">> If the number represented by String exceeds the range defined by UINTN, then</p>
<p class="MsoNormal">> @@ -859,12 +821,6 @@ AsciiStrDecimalToUintnS (</p>
<p class="MsoNormal">> be ignored. Then, the function stops at the first character that is a not a</p>
<p class="MsoNormal">> valid decimal character or a Null-terminator, whichever one comes first.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If String is NULL, then ASSERT().</p>
<p class="MsoNormal">> - If Data is NULL, then ASSERT().</p>
<p class="MsoNormal">> - If PcdMaximumAsciiStringLength is not zero, and String contains more than</p>
<p class="MsoNormal">> - PcdMaximumAsciiStringLength Ascii characters, not including the</p>
<p class="MsoNormal">> - Null-terminator, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> If String has no valid decimal digits in the above format, then 0 is stored</p>
<p class="MsoNormal">> at the location pointed to by Data.</p>
<p class="MsoNormal">> If the number represented by String exceeds the range defined by UINT64, then</p>
<p class="MsoNormal">> @@ -918,12 +874,6 @@ AsciiStrDecimalToUint64S (</p>
<p class="MsoNormal">> character that is a not a valid hexadecimal character or Null-terminator,</p>
<p class="MsoNormal">> whichever on comes first.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If String is NULL, then ASSERT().</p>
<p class="MsoNormal">> - If Data is NULL, then ASSERT().</p>
<p class="MsoNormal">> - If PcdMaximumAsciiStringLength is not zero, and String contains more than</p>
<p class="MsoNormal">> - PcdMaximumAsciiStringLength Ascii characters, not including the</p>
<p class="MsoNormal">> - Null-terminator, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> If String has no valid hexadecimal digits in the above format, then 0 is</p>
<p class="MsoNormal">> stored at the location pointed to by Data.</p>
<p class="MsoNormal">> If the number represented by String exceeds the range defined by UINTN, then</p>
<p class="MsoNormal">> @@ -977,12 +927,6 @@ AsciiStrHexToUintnS (</p>
<p class="MsoNormal">> character that is a not a valid hexadecimal character or Null-terminator,</p>
<p class="MsoNormal">> whichever on comes first.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If String is NULL, then ASSERT().</p>
<p class="MsoNormal">> - If Data is NULL, then ASSERT().</p>
<p class="MsoNormal">> - If PcdMaximumAsciiStringLength is not zero, and String contains more than</p>
<p class="MsoNormal">> - PcdMaximumAsciiStringLength Ascii characters, not including the</p>
<p class="MsoNormal">> - Null-terminator, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> If String has no valid hexadecimal digits in the above format, then 0 is</p>
<p class="MsoNormal">> stored at the location pointed to by Data.</p>
<p class="MsoNormal">> If the number represented by String exceeds the range defined by UINT64, then</p>
<p class="MsoNormal">> @@ -1533,16 +1477,8 @@ StrHexToUint64 (</p>
<p class="MsoNormal">> "::" can be used to compress one or more groups of X when X contains only 0.</p>
<p class="MsoNormal">> The "::" can only appear once in the String.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If String is NULL, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> - If Address is NULL, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> If String is not aligned in a 16-bit boundary, then ASSERT().</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If PcdMaximumUnicodeStringLength is not zero, and String contains more than</p>
<p class="MsoNormal">> - PcdMaximumUnicodeStringLength Unicode characters, not including the</p>
<p class="MsoNormal">> - Null-terminator, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> If EndPointer is not NULL and Address is translated from String, a pointer</p>
<p class="MsoNormal">> to the character that stopped the scan is stored at the location pointed to</p>
<p class="MsoNormal">> by EndPointer.</p>
<p class="MsoNormal">> @@ -1594,16 +1530,8 @@ StrToIpv6Address (</p>
<p class="MsoNormal">> When /P is in the String, the function stops at the first character that is not</p>
<p class="MsoNormal">> a valid decimal digit character after P is converted.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If String is NULL, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> - If Address is NULL, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> If String is not aligned in a 16-bit boundary, then ASSERT().</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If PcdMaximumUnicodeStringLength is not zero, and String contains more than</p>
<p class="MsoNormal">> - PcdMaximumUnicodeStringLength Unicode characters, not including the</p>
<p class="MsoNormal">> - Null-terminator, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> If EndPointer is not NULL and Address is translated from String, a pointer</p>
<p class="MsoNormal">> to the character that stopped the scan is stored at the location pointed to</p>
<p class="MsoNormal">> by EndPointer.</p>
<p class="MsoNormal">> @@ -1667,8 +1595,6 @@ StrToIpv4Address (</p>
<p class="MsoNormal">> oo Data4[48:55]</p>
<p class="MsoNormal">> pp Data4[56:63]</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If String is NULL, then ASSERT().</p>
<p class="MsoNormal">> - If Guid is NULL, then ASSERT().</p>
<p class="MsoNormal">> If String is not aligned in a 16-bit boundary, then ASSERT().</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> @param String Pointer to a Null-terminated Unicode string.</p>
<p class="MsoNormal">> @@ -1703,17 +1629,6 @@ StrToGuid (</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> If String is not aligned in a 16-bit boundary, then ASSERT().</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If String is NULL, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> - If Buffer is NULL, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> - If Length is not multiple of 2, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> - If PcdMaximumUnicodeStringLength is not zero and Length is greater than</p>
<p class="MsoNormal">> - PcdMaximumUnicodeStringLength, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> - If MaxBufferSize is less than (Length / 2), then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> @param String Pointer to a Null-terminated Unicode string.</p>
<p class="MsoNormal">> @param Length The number of Unicode characters to decode.</p>
<p class="MsoNormal">> @param Buffer Pointer to the converted bytes array.</p>
<p class="MsoNormal">> @@ -1804,7 +1719,6 @@ UnicodeStrToAsciiStr (</p>
<p class="MsoNormal">> the upper 8 bits, then ASSERT().</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> If Source is not aligned on a 16-bit boundary, then ASSERT().</p>
<p class="MsoNormal">> - If an error would be returned, then the function will also ASSERT().</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> If an error is returned, then the Destination is unmodified.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> @@ -1851,7 +1765,6 @@ UnicodeStrToAsciiStrS (</p>
<p class="MsoNormal">> If any Unicode characters in Source contain non-zero value in the upper 8</p>
<p class="MsoNormal">> bits, then ASSERT().</p>
<p class="MsoNormal">> If Source is not aligned on a 16-bit boundary, then ASSERT().</p>
<p class="MsoNormal">> - If an error would be returned, then the function will also ASSERT().</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> If an error is returned, then the Destination is unmodified.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> @@ -2415,10 +2328,6 @@ AsciiStrHexToUint64 (</p>
<p class="MsoNormal">> "::" can be used to compress one or more groups of X when X contains only 0.</p>
<p class="MsoNormal">> The "::" can only appear once in the String.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If String is NULL, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> - If Address is NULL, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> If EndPointer is not NULL and Address is translated from String, a pointer</p>
<p class="MsoNormal">> to the character that stopped the scan is stored at the location pointed to</p>
<p class="MsoNormal">> by EndPointer.</p>
<p class="MsoNormal">> @@ -2470,10 +2379,6 @@ AsciiStrToIpv6Address (</p>
<p class="MsoNormal">> When /P is in the String, the function stops at the first character that is not</p>
<p class="MsoNormal">> a valid decimal digit character after P is converted.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If String is NULL, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> - If Address is NULL, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> If EndPointer is not NULL and Address is translated from String, a pointer</p>
<p class="MsoNormal">> to the character that stopped the scan is stored at the location pointed to</p>
<p class="MsoNormal">> by EndPointer.</p>
<p class="MsoNormal">> @@ -2535,9 +2440,6 @@ AsciiStrToIpv4Address (</p>
<p class="MsoNormal">> oo Data4[48:55]</p>
<p class="MsoNormal">> pp Data4[56:63]</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If String is NULL, then ASSERT().</p>
<p class="MsoNormal">> - If Guid is NULL, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> @param String Pointer to a Null-terminated ASCII string.</p>
<p class="MsoNormal">> @param Guid Pointer to the converted GUID.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> @@ -2568,17 +2470,6 @@ AsciiStrToGuid (</p>
<p class="MsoNormal">> decoding stops after Length of characters and outputs Buffer containing</p>
<p class="MsoNormal">> (Length / 2) bytes.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If String is NULL, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> - If Buffer is NULL, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> - If Length is not multiple of 2, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> - If PcdMaximumAsciiStringLength is not zero and Length is greater than</p>
<p class="MsoNormal">> - PcdMaximumAsciiStringLength, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> - If MaxBufferSize is less than (Length / 2), then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> @param String Pointer to a Null-terminated ASCII string.</p>
<p class="MsoNormal">> @param Length The number of ASCII characters to decode.</p>
<p class="MsoNormal">> @param Buffer Pointer to the converted bytes array.</p>
<p class="MsoNormal">> @@ -2659,7 +2550,6 @@ AsciiStrToUnicodeStr (</p>
<p class="MsoNormal">> equal or greater than ((AsciiStrLen (Source) + 1) * sizeof (CHAR16)) in bytes.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> If Destination is not aligned on a 16-bit boundary, then ASSERT().</p>
<p class="MsoNormal">> - If an error would be returned, then the function will also ASSERT().</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> If an error is returned, then the Destination is unmodified.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> @@ -2705,7 +2595,6 @@ AsciiStrToUnicodeStrS (</p>
<p class="MsoNormal">> ((MIN(AsciiStrLen(Source), Length) + 1) * sizeof (CHAR8)) in bytes.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> If Destination is not aligned on a 16-bit boundary, then ASSERT().</p>
<p class="MsoNormal">> - If an error would be returned, then the function will also ASSERT().</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> If an error is returned, then Destination and DestinationLength are</p>
<p class="MsoNormal">> unmodified.</p>
<p class="MsoNormal">> diff --git a/MdePkg/Library/BaseLib/SafeString.c b/MdePkg/Library/BaseLib/SafeString.c</p>
<p class="MsoNormal">> index 7dc03d2caa..3bb23ca1a1 100644</p>
<p class="MsoNormal">> --- a/MdePkg/Library/BaseLib/SafeString.c</p>
<p class="MsoNormal">> +++ b/MdePkg/Library/BaseLib/SafeString.c</p>
<p class="MsoNormal">> @@ -14,8 +14,10 @@</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> #define SAFE_STRING_CONSTRAINT_CHECK(Expression, Status) \</p>
<p class="MsoNormal">> do { \</p>
<p class="MsoNormal">> - ASSERT (Expression); \</p>
<p class="MsoNormal">> if (!(Expression)) { \</p>
<p class="MsoNormal">> + DEBUG ((DEBUG_VERBOSE, \</p>
<p class="MsoNormal">> + "%a(%d) %a: SAFE_STRING_CONSTRAINT_CHECK(%a) failed. Return %r\n", \</p>
<p class="MsoNormal">> + __FILE__, __LINE__, __FUNCTION__, #Expression, Status)); \</p>
<p class="MsoNormal">> return Status; \</p>
<p class="MsoNormal">> } \</p>
<p class="MsoNormal">> } while (FALSE)</p>
<p class="MsoNormal">> @@ -197,7 +199,6 @@ StrnSizeS (</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> If Destination is not aligned on a 16-bit boundary, then ASSERT().</p>
<p class="MsoNormal">> If Source is not aligned on a 16-bit boundary, then ASSERT().</p>
<p class="MsoNormal">> - If an error would be returned, then the function will also ASSERT().</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> If an error is returned, then the Destination is unmodified.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> @@ -279,7 +280,6 @@ StrCpyS (</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> If Length > 0 and Destination is not aligned on a 16-bit boundary, then ASSERT().</p>
<p class="MsoNormal">> If Length > 0 and Source is not aligned on a 16-bit boundary, then ASSERT().</p>
<p class="MsoNormal">> - If an error would be returned, then the function will also ASSERT().</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> If an error is returned, then the Destination is unmodified.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> @@ -372,7 +372,6 @@ StrnCpyS (</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> If Destination is not aligned on a 16-bit boundary, then ASSERT().</p>
<p class="MsoNormal">> If Source is not aligned on a 16-bit boundary, then ASSERT().</p>
<p class="MsoNormal">> - If an error would be returned, then the function will also ASSERT().</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> If an error is returned, then the Destination is unmodified.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> @@ -473,7 +472,6 @@ StrCatS (</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> If Destination is not aligned on a 16-bit boundary, then ASSERT().</p>
<p class="MsoNormal">> If Source is not aligned on a 16-bit boundary, then ASSERT().</p>
<p class="MsoNormal">> - If an error would be returned, then the function will also ASSERT().</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> If an error is returned, then the Destination is unmodified.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> @@ -590,12 +588,7 @@ StrnCatS (</p>
<p class="MsoNormal">> be ignored. Then, the function stops at the first character that is a not a</p>
<p class="MsoNormal">> valid decimal character or a Null-terminator, whichever one comes first.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If String is NULL, then ASSERT().</p>
<p class="MsoNormal">> - If Data is NULL, then ASSERT().</p>
<p class="MsoNormal">> If String is not aligned in a 16-bit boundary, then ASSERT().</p>
<p class="MsoNormal">> - If PcdMaximumUnicodeStringLength is not zero, and String contains more than</p>
<p class="MsoNormal">> - PcdMaximumUnicodeStringLength Unicode characters, not including the</p>
<p class="MsoNormal">> - Null-terminator, then ASSERT().</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> If String has no valid decimal digits in the above format, then 0 is stored</p>
<p class="MsoNormal">> at the location pointed to by Data.</p>
<p class="MsoNormal">> @@ -705,12 +698,7 @@ StrDecimalToUintnS (</p>
<p class="MsoNormal">> be ignored. Then, the function stops at the first character that is a not a</p>
<p class="MsoNormal">> valid decimal character or a Null-terminator, whichever one comes first.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If String is NULL, then ASSERT().</p>
<p class="MsoNormal">> - If Data is NULL, then ASSERT().</p>
<p class="MsoNormal">> If String is not aligned in a 16-bit boundary, then ASSERT().</p>
<p class="MsoNormal">> - If PcdMaximumUnicodeStringLength is not zero, and String contains more than</p>
<p class="MsoNormal">> - PcdMaximumUnicodeStringLength Unicode characters, not including the</p>
<p class="MsoNormal">> - Null-terminator, then ASSERT().</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> If String has no valid decimal digits in the above format, then 0 is stored</p>
<p class="MsoNormal">> at the location pointed to by Data.</p>
<p class="MsoNormal">> @@ -825,12 +813,7 @@ StrDecimalToUint64S (</p>
<p class="MsoNormal">> the first character that is a not a valid hexadecimal character or NULL,</p>
<p class="MsoNormal">> whichever one comes first.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If String is NULL, then ASSERT().</p>
<p class="MsoNormal">> - If Data is NULL, then ASSERT().</p>
<p class="MsoNormal">> If String is not aligned in a 16-bit boundary, then ASSERT().</p>
<p class="MsoNormal">> - If PcdMaximumUnicodeStringLength is not zero, and String contains more than</p>
<p class="MsoNormal">> - PcdMaximumUnicodeStringLength Unicode characters, not including the</p>
<p class="MsoNormal">> - Null-terminator, then ASSERT().</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> If String has no valid hexadecimal digits in the above format, then 0 is</p>
<p class="MsoNormal">> stored at the location pointed to by Data.</p>
<p class="MsoNormal">> @@ -956,12 +939,7 @@ StrHexToUintnS (</p>
<p class="MsoNormal">> the first character that is a not a valid hexadecimal character or NULL,</p>
<p class="MsoNormal">> whichever one comes first.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If String is NULL, then ASSERT().</p>
<p class="MsoNormal">> - If Data is NULL, then ASSERT().</p>
<p class="MsoNormal">> If String is not aligned in a 16-bit boundary, then ASSERT().</p>
<p class="MsoNormal">> - If PcdMaximumUnicodeStringLength is not zero, and String contains more than</p>
<p class="MsoNormal">> - PcdMaximumUnicodeStringLength Unicode characters, not including the</p>
<p class="MsoNormal">> - Null-terminator, then ASSERT().</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> If String has no valid hexadecimal digits in the above format, then 0 is</p>
<p class="MsoNormal">> stored at the location pointed to by Data.</p>
<p class="MsoNormal">> @@ -1091,16 +1069,8 @@ StrHexToUint64S (</p>
<p class="MsoNormal">> "::" can be used to compress one or more groups of X when X contains only 0.</p>
<p class="MsoNormal">> The "::" can only appear once in the String.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If String is NULL, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> - If Address is NULL, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> If String is not aligned in a 16-bit boundary, then ASSERT().</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If PcdMaximumUnicodeStringLength is not zero, and String contains more than</p>
<p class="MsoNormal">> - PcdMaximumUnicodeStringLength Unicode characters, not including the</p>
<p class="MsoNormal">> - Null-terminator, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> If EndPointer is not NULL and Address is translated from String, a pointer</p>
<p class="MsoNormal">> to the character that stopped the scan is stored at the location pointed to</p>
<p class="MsoNormal">> by EndPointer.</p>
<p class="MsoNormal">> @@ -1317,16 +1287,8 @@ StrToIpv6Address (</p>
<p class="MsoNormal">> When /P is in the String, the function stops at the first character that is not</p>
<p class="MsoNormal">> a valid decimal digit character after P is converted.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If String is NULL, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> - If Address is NULL, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> If String is not aligned in a 16-bit boundary, then ASSERT().</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If PcdMaximumUnicodeStringLength is not zero, and String contains more than</p>
<p class="MsoNormal">> - PcdMaximumUnicodeStringLength Unicode characters, not including the</p>
<p class="MsoNormal">> - Null-terminator, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> If EndPointer is not NULL and Address is translated from String, a pointer</p>
<p class="MsoNormal">> to the character that stopped the scan is stored at the location pointed to</p>
<p class="MsoNormal">> by EndPointer.</p>
<p class="MsoNormal">> @@ -1482,8 +1444,6 @@ StrToIpv4Address (</p>
<p class="MsoNormal">> oo Data4[48:55]</p>
<p class="MsoNormal">> pp Data4[56:63]</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If String is NULL, then ASSERT().</p>
<p class="MsoNormal">> - If Guid is NULL, then ASSERT().</p>
<p class="MsoNormal">> If String is not aligned in a 16-bit boundary, then ASSERT().</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> @param String Pointer to a Null-terminated Unicode string.</p>
<p class="MsoNormal">> @@ -1589,17 +1549,6 @@ StrToGuid (</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> If String is not aligned in a 16-bit boundary, then ASSERT().</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If String is NULL, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> - If Buffer is NULL, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> - If Length is not multiple of 2, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> - If PcdMaximumUnicodeStringLength is not zero and Length is greater than</p>
<p class="MsoNormal">> - PcdMaximumUnicodeStringLength, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> - If MaxBufferSize is less than (Length / 2), then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> @param String Pointer to a Null-terminated Unicode string.</p>
<p class="MsoNormal">> @param Length The number of Unicode characters to decode.</p>
<p class="MsoNormal">> @param Buffer Pointer to the converted bytes array.</p>
<p class="MsoNormal">> @@ -1779,8 +1728,6 @@ AsciiStrnSizeS (</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> This function is similar as strcpy_s defined in C11.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If an error would be returned, then the function will also ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> If an error is returned, then the Destination is unmodified.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> @param Destination A pointer to a Null-terminated Ascii string.</p>
<p class="MsoNormal">> @@ -1856,8 +1803,6 @@ AsciiStrCpyS (</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> This function is similar as strncpy_s defined in C11.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If an error would be returned, then the function will also ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> If an error is returned, then the Destination is unmodified.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> @param Destination A pointer to a Null-terminated Ascii string.</p>
<p class="MsoNormal">> @@ -1944,8 +1889,6 @@ AsciiStrnCpyS (</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> This function is similar as strcat_s defined in C11.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If an error would be returned, then the function will also ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> If an error is returned, then the Destination is unmodified.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> @param Destination A pointer to a Null-terminated Ascii string.</p>
<p class="MsoNormal">> @@ -2040,8 +1983,6 @@ AsciiStrCatS (</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> This function is similar as strncat_s defined in C11.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If an error would be returned, then the function will also ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> If an error is returned, then the Destination is unmodified.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> @param Destination A pointer to a Null-terminated Ascii string.</p>
<p class="MsoNormal">> @@ -2154,12 +2095,6 @@ AsciiStrnCatS (</p>
<p class="MsoNormal">> be ignored. Then, the function stops at the first character that is a not a</p>
<p class="MsoNormal">> valid decimal character or a Null-terminator, whichever one comes first.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If String is NULL, then ASSERT().</p>
<p class="MsoNormal">> - If Data is NULL, then ASSERT().</p>
<p class="MsoNormal">> - If PcdMaximumAsciiStringLength is not zero, and String contains more than</p>
<p class="MsoNormal">> - PcdMaximumAsciiStringLength Ascii characters, not including the</p>
<p class="MsoNormal">> - Null-terminator, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> If String has no valid decimal digits in the above format, then 0 is stored</p>
<p class="MsoNormal">> at the location pointed to by Data.</p>
<p class="MsoNormal">> If the number represented by String exceeds the range defined by UINTN, then</p>
<p class="MsoNormal">> @@ -2266,12 +2201,6 @@ AsciiStrDecimalToUintnS (</p>
<p class="MsoNormal">> be ignored. Then, the function stops at the first character that is a not a</p>
<p class="MsoNormal">> valid decimal character or a Null-terminator, whichever one comes first.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If String is NULL, then ASSERT().</p>
<p class="MsoNormal">> - If Data is NULL, then ASSERT().</p>
<p class="MsoNormal">> - If PcdMaximumAsciiStringLength is not zero, and String contains more than</p>
<p class="MsoNormal">> - PcdMaximumAsciiStringLength Ascii characters, not including the</p>
<p class="MsoNormal">> - Null-terminator, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> If String has no valid decimal digits in the above format, then 0 is stored</p>
<p class="MsoNormal">> at the location pointed to by Data.</p>
<p class="MsoNormal">> If the number represented by String exceeds the range defined by UINT64, then</p>
<p class="MsoNormal">> @@ -2382,12 +2311,6 @@ AsciiStrDecimalToUint64S (</p>
<p class="MsoNormal">> character that is a not a valid hexadecimal character or Null-terminator,</p>
<p class="MsoNormal">> whichever on comes first.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If String is NULL, then ASSERT().</p>
<p class="MsoNormal">> - If Data is NULL, then ASSERT().</p>
<p class="MsoNormal">> - If PcdMaximumAsciiStringLength is not zero, and String contains more than</p>
<p class="MsoNormal">> - PcdMaximumAsciiStringLength Ascii characters, not including the</p>
<p class="MsoNormal">> - Null-terminator, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> If String has no valid hexadecimal digits in the above format, then 0 is</p>
<p class="MsoNormal">> stored at the location pointed to by Data.</p>
<p class="MsoNormal">> If the number represented by String exceeds the range defined by UINTN, then</p>
<p class="MsoNormal">> @@ -2509,12 +2432,6 @@ AsciiStrHexToUintnS (</p>
<p class="MsoNormal">> character that is a not a valid hexadecimal character or Null-terminator,</p>
<p class="MsoNormal">> whichever on comes first.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If String is NULL, then ASSERT().</p>
<p class="MsoNormal">> - If Data is NULL, then ASSERT().</p>
<p class="MsoNormal">> - If PcdMaximumAsciiStringLength is not zero, and String contains more than</p>
<p class="MsoNormal">> - PcdMaximumAsciiStringLength Ascii characters, not including the</p>
<p class="MsoNormal">> - Null-terminator, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> If String has no valid hexadecimal digits in the above format, then 0 is</p>
<p class="MsoNormal">> stored at the location pointed to by Data.</p>
<p class="MsoNormal">> If the number represented by String exceeds the range defined by UINT64, then</p>
<p class="MsoNormal">> @@ -2635,7 +2552,6 @@ AsciiStrHexToUint64S (</p>
<p class="MsoNormal">> the upper 8 bits, then ASSERT().</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> If Source is not aligned on a 16-bit boundary, then ASSERT().</p>
<p class="MsoNormal">> - If an error would be returned, then the function will also ASSERT().</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> If an error is returned, then the Destination is unmodified.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> @@ -2735,7 +2651,6 @@ UnicodeStrToAsciiStrS (</p>
<p class="MsoNormal">> If any Unicode characters in Source contain non-zero value in the upper 8</p>
<p class="MsoNormal">> bits, then ASSERT().</p>
<p class="MsoNormal">> If Source is not aligned on a 16-bit boundary, then ASSERT().</p>
<p class="MsoNormal">> - If an error would be returned, then the function will also ASSERT().</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> If an error is returned, then Destination and DestinationLength are</p>
<p class="MsoNormal">> unmodified.</p>
<p class="MsoNormal">> @@ -2855,7 +2770,6 @@ UnicodeStrnToAsciiStrS (</p>
<p class="MsoNormal">> equal or greater than ((AsciiStrLen (Source) + 1) * sizeof (CHAR16)) in bytes.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> If Destination is not aligned on a 16-bit boundary, then ASSERT().</p>
<p class="MsoNormal">> - If an error would be returned, then the function will also ASSERT().</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> If an error is returned, then the Destination is unmodified.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> @@ -2948,7 +2862,6 @@ AsciiStrToUnicodeStrS (</p>
<p class="MsoNormal">> ((MIN(AsciiStrLen(Source), Length) + 1) * sizeof (CHAR8)) in bytes.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> If Destination is not aligned on a 16-bit boundary, then ASSERT().</p>
<p class="MsoNormal">> - If an error would be returned, then the function will also ASSERT().</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> If an error is returned, then Destination and DestinationLength are</p>
<p class="MsoNormal">> unmodified.</p>
<p class="MsoNormal">> @@ -3072,10 +2985,6 @@ AsciiStrnToUnicodeStrS (</p>
<p class="MsoNormal">> "::" can be used to compress one or more groups of X when X contains only 0.</p>
<p class="MsoNormal">> The "::" can only appear once in the String.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If String is NULL, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> - If Address is NULL, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> If EndPointer is not NULL and Address is translated from String, a pointer</p>
<p class="MsoNormal">> to the character that stopped the scan is stored at the location pointed to</p>
<p class="MsoNormal">> by EndPointer.</p>
<p class="MsoNormal">> @@ -3291,10 +3200,6 @@ AsciiStrToIpv6Address (</p>
<p class="MsoNormal">> When /P is in the String, the function stops at the first character that is not</p>
<p class="MsoNormal">> a valid decimal digit character after P is converted.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If String is NULL, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> - If Address is NULL, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> If EndPointer is not NULL and Address is translated from String, a pointer</p>
<p class="MsoNormal">> to the character that stopped the scan is stored at the location pointed to</p>
<p class="MsoNormal">> by EndPointer.</p>
<p class="MsoNormal">> @@ -3448,9 +3353,6 @@ AsciiStrToIpv4Address (</p>
<p class="MsoNormal">> oo Data4[48:55]</p>
<p class="MsoNormal">> pp Data4[56:63]</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If String is NULL, then ASSERT().</p>
<p class="MsoNormal">> - If Guid is NULL, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> @param String Pointer to a Null-terminated ASCII string.</p>
<p class="MsoNormal">> @param Guid Pointer to the converted GUID.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> @@ -3550,17 +3452,6 @@ AsciiStrToGuid (</p>
<p class="MsoNormal">> decoding stops after Length of characters and outputs Buffer containing</p>
<p class="MsoNormal">> (Length / 2) bytes.</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal">> - If String is NULL, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> - If Buffer is NULL, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> - If Length is not multiple of 2, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> - If PcdMaximumAsciiStringLength is not zero and Length is greater than</p>
<p class="MsoNormal">> - PcdMaximumAsciiStringLength, then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> - If MaxBufferSize is less than (Length / 2), then ASSERT().</p>
<p class="MsoNormal">> -</p>
<p class="MsoNormal">> @param String Pointer to a Null-terminated ASCII string.</p>
<p class="MsoNormal">> @param Length The number of ASCII characters to decode.</p>
<p class="MsoNormal">> @param Buffer Pointer to the converted bytes array.</p>
<p class="MsoNormal">> --</p>
<p class="MsoNormal">> 2.21.0.windows.1</p>
<p class="MsoNormal">> </p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>
<div width="1" style="color:white;clear:both">_._,_._,_</div>
<hr>
Groups.io Links:<p>
You receive all messages sent to this group.
<p>
<a target="_blank" href="https://edk2.groups.io/g/devel/message/59984">View/Reply Online (#59984)</a> |
|
<a target="_blank" href="https://groups.io/mt/74355542/1813853">Mute This Topic</a>
| <a href="https://edk2.groups.io/g/devel/post">New Topic</a><br>
<br>
<a href="https://edk2.groups.io/g/devel/editsub/1813853">Your Subscription</a> |
<a href="mailto:devel+owner@edk2.groups.io">Contact Group Owner</a> |
<a href="https://edk2.groups.io/g/devel/unsub">Unsubscribe</a>
[edk2-devel-archive@redhat.com]<br>
<div width="1" style="color:white;clear:both">_._,_._,_</div>