[edk2-devel] [PATCH V7 1/1] MdePkg: Fix SafeString performing assertions on runtime checks
Michael D Kinney
michael.d.kinney at intel.com
Mon May 18 17:04:20 UTC 2020
Vitaly,
Reviewed-by: Michael D Kinney <michael.d.kinney at intel.com>
I agree that can go in now for the stable tag.
The only additional comment I have received is if a DEBUG() message
can be added where the ASSERT() was removed. Perhaps only at the
DEBUG_VERBOSE level that is not usually enabled by default. A
developer that wants to see SAFE_STRING_CONSTRAINT_CHECK() conditions
that fail would need to enable DEBUG_VERBOSE messages.
Thanks,
Mike
> -----Original Message-----
> From: devel at edk2.groups.io <devel at edk2.groups.io> On
> Behalf Of Vitaly Cheptsov
> Sent: Thursday, May 14, 2020 10:32 AM
> To: devel at edk2.groups.io
> Cc: Andrew Fish <afish at apple.com>; Ard Biesheuvel
> <ard.biesheuvel at linaro.org>; Bret Barkelew
> <bret.barkelew at microsoft.com>; Brian J . Johnson
> <brian.johnson at hpe.com>; Chiu, Chasel
> <chasel.chiu at intel.com>; Justen, Jordan L
> <jordan.l.justen at intel.com>; Laszlo Ersek
> <lersek at redhat.com>; Leif Lindholm <leif at nuviainc.com>;
> Gao, Liming <liming.gao at intel.com>; Marvin Häuser
> <mhaeuser at outlook.de>; Kinney, Michael D
> <michael.d.kinney at intel.com>; Zimmer, Vincent
> <vincent.zimmer at intel.com>; Gao, Zhichao
> <zhichao.gao at intel.com>
> Subject: [edk2-devel] [PATCH V7 1/1] MdePkg: Fix
> SafeString performing assertions on runtime checks
>
> REF:
> https://bugzilla.tianocore.org/show_bug.cgi?id=2054
>
> Runtime checks returned via status return code should
> not work as
> assertions to permit parsing not trusted data with
> SafeString
> interfaces.
>
> CC: Andrew Fish <afish at apple.com>
> CC: Ard Biesheuvel <ard.biesheuvel at linaro.org>
> CC: Bret Barkelew <bret.barkelew at microsoft.com>
> CC: Brian J. Johnson <brian.johnson at hpe.com>
> CC: Chasel Chiu <chasel.chiu at intel.com>
> CC: Jordan Justen <jordan.l.justen at intel.com>
> CC: Laszlo Ersek <lersek at redhat.com>
> CC: Leif Lindholm <leif at nuviainc.com>
> CC: Liming Gao <liming.gao at intel.com>
> CC: Marvin Häuser <mhaeuser at outlook.de>
> CC: Mike Kinney <michael.d.kinney at intel.com>
> CC: Vincent Zimmer <vincent.zimmer at intel.com>
> CC: Zhichao Gao <zhichao.gao at intel.com>
> Signed-off-by: Vitaly Cheptsov <vit9696 at protonmail.com>
> ---
> MdePkg/Include/Library/BaseLib.h | 111 ------------
> -------
> MdePkg/Library/BaseLib/SafeString.c | 112 ------------
> --------
> 2 files changed, 223 deletions(-)
>
> diff --git a/MdePkg/Include/Library/BaseLib.h
> b/MdePkg/Include/Library/BaseLib.h
> index ecadff8b23..2c194ad943 100644
> --- a/MdePkg/Include/Library/BaseLib.h
> +++ b/MdePkg/Include/Library/BaseLib.h
> @@ -189,7 +189,6 @@ StrnSizeS (
>
>
>
> If Destination is not aligned on a 16-bit boundary,
> then ASSERT().
>
>
> If Source is not aligned on a 16-bit boundary, then
> ASSERT().
>
>
> - If an error would be returned, then the function
> will also ASSERT().
>
>
>
>
>
> If an error is returned, then the Destination is
> unmodified.
>
>
>
>
>
> @@ -225,7 +224,6 @@ StrCpyS (
>
>
>
> If Length > 0 and Destination is not aligned on a
> 16-bit boundary, then ASSERT().
>
>
> If Length > 0 and Source is not aligned on a 16-bit
> boundary, then ASSERT().
>
>
> - If an error would be returned, then the function
> will also ASSERT().
>
>
>
>
>
> If an error is returned, then the Destination is
> unmodified.
>
>
>
>
>
> @@ -263,7 +261,6 @@ StrnCpyS (
>
>
>
> If Destination is not aligned on a 16-bit boundary,
> then ASSERT().
>
>
> If Source is not aligned on a 16-bit boundary, then
> ASSERT().
>
>
> - If an error would be returned, then the function
> will also ASSERT().
>
>
>
>
>
> If an error is returned, then the Destination is
> unmodified.
>
>
>
>
>
> @@ -303,7 +300,6 @@ StrCatS (
>
>
>
> If Destination is not aligned on a 16-bit boundary,
> then ASSERT().
>
>
> If Source is not aligned on a 16-bit boundary, then
> ASSERT().
>
>
> - If an error would be returned, then the function
> will also ASSERT().
>
>
>
>
>
> If an error is returned, then the Destination is
> unmodified.
>
>
>
>
>
> @@ -350,12 +346,7 @@ StrnCatS (
> be ignored. Then, the function stops at the first
> character that is a not a
>
>
> valid decimal character or a Null-terminator,
> whichever one comes first.
>
>
>
>
>
> - If String is NULL, then ASSERT().
>
>
> - If Data is NULL, then ASSERT().
>
>
> If String is not aligned in 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 String has no valid decimal digits in the above
> format, then 0 is stored
>
>
> at the location pointed to by Data.
>
>
> @@ -406,12 +397,7 @@ StrDecimalToUintnS (
> be ignored. Then, the function stops at the first
> character that is a not a
>
>
> valid decimal character or a Null-terminator,
> whichever one comes first.
>
>
>
>
>
> - If String is NULL, then ASSERT().
>
>
> - If Data is NULL, then ASSERT().
>
>
> If String is not aligned in 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 String has no valid decimal digits in the above
> format, then 0 is stored
>
>
> at the location pointed to by Data.
>
>
> @@ -467,12 +453,7 @@ StrDecimalToUint64S (
> the first character that is a not a valid
> hexadecimal character or NULL,
>
>
> whichever one comes first.
>
>
>
>
>
> - If String is NULL, then ASSERT().
>
>
> - If Data is NULL, then ASSERT().
>
>
> If String is not aligned in 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 String has no valid hexadecimal digits in the
> above format, then 0 is
>
>
> stored at the location pointed to by Data.
>
>
> @@ -528,12 +509,7 @@ StrHexToUintnS (
> the first character that is a not a valid
> hexadecimal character or NULL,
>
>
> whichever one comes first.
>
>
>
>
>
> - If String is NULL, then ASSERT().
>
>
> - If Data is NULL, then ASSERT().
>
>
> If String is not aligned in 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 String has no valid hexadecimal digits in the
> above format, then 0 is
>
>
> stored at the location pointed to by Data.
>
>
> @@ -622,8 +598,6 @@ AsciiStrnSizeS (
>
>
>
> This function is similar as strcpy_s defined in C11.
>
>
>
>
>
> - If an error would be returned, then the function
> will also ASSERT().
>
>
> -
>
>
> If an error is returned, then the Destination is
> unmodified.
>
>
>
>
>
> @param Destination A pointer to a
> Null-terminated Ascii string.
>
>
> @@ -656,8 +630,6 @@ AsciiStrCpyS (
>
>
>
> This function is similar as strncpy_s defined in
> C11.
>
>
>
>
>
> - If an error would be returned, then the function
> will also ASSERT().
>
>
> -
>
>
> If an error is returned, then the Destination is
> unmodified.
>
>
>
>
>
> @param Destination A pointer to a
> Null-terminated Ascii string.
>
>
> @@ -692,8 +664,6 @@ AsciiStrnCpyS (
>
>
>
> This function is similar as strcat_s defined in C11.
>
>
>
>
>
> - If an error would be returned, then the function
> will also ASSERT().
>
>
> -
>
>
> If an error is returned, then the Destination is
> unmodified.
>
>
>
>
>
> @param Destination A pointer to a
> Null-terminated Ascii string.
>
>
> @@ -730,8 +700,6 @@ AsciiStrCatS (
>
>
>
> This function is similar as strncat_s defined in
> C11.
>
>
>
>
>
> - If an error would be returned, then the function
> will also ASSERT().
>
>
> -
>
>
> If an error is returned, then the Destination is
> unmodified.
>
>
>
>
>
> @param Destination A pointer to a
> Null-terminated Ascii string.
>
>
> @@ -777,12 +745,6 @@ AsciiStrnCatS (
> be ignored. Then, the function stops at the first
> character that is a not a
>
>
> valid decimal character or a Null-terminator,
> whichever one comes first.
>
>
>
>
>
> - If String is NULL, then ASSERT().
>
>
> - If Data 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 String has no valid decimal digits in the above
> format, then 0 is stored
>
>
> at the location pointed to by Data.
>
>
> If the number represented by String exceeds the
> range defined by UINTN, then
>
>
> @@ -832,12 +794,6 @@ AsciiStrDecimalToUintnS (
> be ignored. Then, the function stops at the first
> character that is a not a
>
>
> valid decimal character or a Null-terminator,
> whichever one comes first.
>
>
>
>
>
> - If String is NULL, then ASSERT().
>
>
> - If Data 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 String has no valid decimal digits in the above
> format, then 0 is stored
>
>
> at the location pointed to by Data.
>
>
> If the number represented by String exceeds the
> range defined by UINT64, then
>
>
> @@ -891,12 +847,6 @@ AsciiStrDecimalToUint64S (
> character that is a not a valid hexadecimal
> character or Null-terminator,
>
>
> whichever on comes first.
>
>
>
>
>
> - If String is NULL, then ASSERT().
>
>
> - If Data 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 String has no valid hexadecimal digits in the
> above format, then 0 is
>
>
> stored at the location pointed to by Data.
>
>
> If the number represented by String exceeds the
> range defined by UINTN, then
>
>
> @@ -950,12 +900,6 @@ AsciiStrHexToUintnS (
> character that is a not a valid hexadecimal
> character or Null-terminator,
>
>
> whichever on comes first.
>
>
>
>
>
> - If String is NULL, then ASSERT().
>
>
> - If Data 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 String has no valid hexadecimal digits in the
> above format, then 0 is
>
>
> stored at the location pointed to by Data.
>
>
> If the number represented by String exceeds the
> range defined by UINT64, then
>
>
> @@ -1506,16 +1450,8 @@ StrHexToUint64 (
> "::" can be used to compress one or more groups of X
> when X contains only 0.
>
>
> The "::" can only appear once in the String.
>
>
>
>
>
> - If String is NULL, then ASSERT().
>
>
> -
>
>
> - If Address is NULL, then ASSERT().
>
>
> -
>
>
> If String is not aligned in 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 EndPointer is not NULL and Address is translated
> from String, a pointer
>
>
> to the character that stopped the scan is stored at
> the location pointed to
>
>
> by EndPointer.
>
>
> @@ -1567,16 +1503,8 @@ StrToIpv6Address (
> When /P is in the String, the function stops at the
> first character that is not
>
>
> a valid decimal digit character after P is
> converted.
>
>
>
>
>
> - If String is NULL, then ASSERT().
>
>
> -
>
>
> - If Address is NULL, then ASSERT().
>
>
> -
>
>
> If String is not aligned in 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 EndPointer is not NULL and Address is translated
> from String, a pointer
>
>
> to the character that stopped the scan is stored at
> the location pointed to
>
>
> by EndPointer.
>
>
> @@ -1640,8 +1568,6 @@ StrToIpv4Address (
> oo Data4[48:55]
>
>
> pp Data4[56:63]
>
>
>
>
>
> - If String is NULL, then ASSERT().
>
>
> - If Guid is NULL, then ASSERT().
>
>
> If String is not aligned in a 16-bit boundary, then
> ASSERT().
>
>
>
>
>
> @param String Pointer to a Null-
> terminated Unicode string.
>
>
> @@ -1676,17 +1602,6 @@ StrToGuid (
>
>
>
> If String is not aligned in a 16-bit boundary, then
> ASSERT().
>
>
>
>
>
> - If String is NULL, then ASSERT().
>
>
> -
>
>
> - If Buffer is NULL, then ASSERT().
>
>
> -
>
>
> - If Length is not multiple of 2, then ASSERT().
>
>
> -
>
>
> - If PcdMaximumUnicodeStringLength is not zero and
> Length is greater than
>
>
> - PcdMaximumUnicodeStringLength, then ASSERT().
>
>
> -
>
>
> - If MaxBufferSize is less than (Length / 2), then
> ASSERT().
>
>
> -
>
>
> @param String Pointer to a Null-
> terminated Unicode string.
>
>
> @param Length The number of
> Unicode characters to decode.
>
>
> @param Buffer Pointer to the
> converted bytes array.
>
>
> @@ -1777,7 +1692,6 @@ UnicodeStrToAsciiStr (
> the upper 8 bits, then ASSERT().
>
>
>
>
>
> If Source is not aligned on a 16-bit boundary, then
> ASSERT().
>
>
> - If an error would be returned, then the function
> will also ASSERT().
>
>
>
>
>
> If an error is returned, then the Destination is
> unmodified.
>
>
>
>
>
> @@ -1824,7 +1738,6 @@ UnicodeStrToAsciiStrS (
> If any Unicode characters in Source contain non-zero
> value in the upper 8
>
>
> bits, then ASSERT().
>
>
> If Source is not aligned on a 16-bit boundary, then
> ASSERT().
>
>
> - If an error would be returned, then the function
> will also ASSERT().
>
>
>
>
>
> If an error is returned, then the Destination is
> unmodified.
>
>
>
>
>
> @@ -2388,10 +2301,6 @@ AsciiStrHexToUint64 (
> "::" can be used to compress one or more groups of X
> when X contains only 0.
>
>
> The "::" can only appear once in the String.
>
>
>
>
>
> - If String is NULL, then ASSERT().
>
>
> -
>
>
> - If Address is NULL, then ASSERT().
>
>
> -
>
>
> If EndPointer is not NULL and Address is translated
> from String, a pointer
>
>
> to the character that stopped the scan is stored at
> the location pointed to
>
>
> by EndPointer.
>
>
> @@ -2443,10 +2352,6 @@ AsciiStrToIpv6Address (
> When /P is in the String, the function stops at the
> first character that is not
>
>
> a valid decimal digit character after P is
> converted.
>
>
>
>
>
> - If String is NULL, then ASSERT().
>
>
> -
>
>
> - If Address is NULL, then ASSERT().
>
>
> -
>
>
> If EndPointer is not NULL and Address is translated
> from String, a pointer
>
>
> to the character that stopped the scan is stored at
> the location pointed to
>
>
> by EndPointer.
>
>
> @@ -2508,9 +2413,6 @@ AsciiStrToIpv4Address (
> oo Data4[48:55]
>
>
> pp Data4[56:63]
>
>
>
>
>
> - If String is NULL, then ASSERT().
>
>
> - If Guid is NULL, then ASSERT().
>
>
> -
>
>
> @param String Pointer to a Null-
> terminated ASCII string.
>
>
> @param Guid Pointer to the
> converted GUID.
>
>
>
>
>
> @@ -2541,17 +2443,6 @@ AsciiStrToGuid (
> decoding stops after Length of characters and
> outputs Buffer containing
>
>
> (Length / 2) bytes.
>
>
>
>
>
> - If String is NULL, then ASSERT().
>
>
> -
>
>
> - If Buffer is NULL, then ASSERT().
>
>
> -
>
>
> - If Length is not multiple of 2, then ASSERT().
>
>
> -
>
>
> - If PcdMaximumAsciiStringLength is not zero and
> Length is greater than
>
>
> - PcdMaximumAsciiStringLength, then ASSERT().
>
>
> -
>
>
> - If MaxBufferSize is less than (Length / 2), then
> ASSERT().
>
>
> -
>
>
> @param String Pointer to a Null-
> terminated ASCII string.
>
>
> @param Length The number of ASCII
> characters to decode.
>
>
> @param Buffer Pointer to the
> converted bytes array.
>
>
> @@ -2632,7 +2523,6 @@ AsciiStrToUnicodeStr (
> equal or greater than ((AsciiStrLen (Source) + 1) *
> sizeof (CHAR16)) in bytes.
>
>
>
>
>
> If Destination is not aligned on a 16-bit boundary,
> then ASSERT().
>
>
> - If an error would be returned, then the function
> will also ASSERT().
>
>
>
>
>
> If an error is returned, then the Destination is
> unmodified.
>
>
>
>
>
> @@ -2678,7 +2568,6 @@ AsciiStrToUnicodeStrS (
> ((MIN(AsciiStrLen(Source), Length) + 1) * sizeof
> (CHAR8)) in bytes.
>
>
>
>
>
> If Destination is not aligned on a 16-bit boundary,
> then ASSERT().
>
>
> - If an error would be returned, then the function
> will also ASSERT().
>
>
>
>
>
> If an error is returned, then Destination and
> DestinationLength are
>
>
> unmodified.
>
>
> diff --git a/MdePkg/Library/BaseLib/SafeString.c
> b/MdePkg/Library/BaseLib/SafeString.c
> index 7dc03d2caa..41d9137b83 100644
> --- a/MdePkg/Library/BaseLib/SafeString.c
> +++ b/MdePkg/Library/BaseLib/SafeString.c
> @@ -14,7 +14,6 @@
>
>
>
> #define SAFE_STRING_CONSTRAINT_CHECK(Expression,
> Status) \
>
>
> do { \
>
>
> - ASSERT (Expression); \
>
>
> if (!(Expression)) { \
>
>
> return Status; \
>
>
> } \
>
>
> @@ -197,7 +196,6 @@ StrnSizeS (
>
>
>
> If Destination is not aligned on a 16-bit boundary,
> then ASSERT().
>
>
> If Source is not aligned on a 16-bit boundary, then
> ASSERT().
>
>
> - If an error would be returned, then the function
> will also ASSERT().
>
>
>
>
>
> If an error is returned, then the Destination is
> unmodified.
>
>
>
>
>
> @@ -279,7 +277,6 @@ StrCpyS (
>
>
>
> If Length > 0 and Destination is not aligned on a
> 16-bit boundary, then ASSERT().
>
>
> If Length > 0 and Source is not aligned on a 16-bit
> boundary, then ASSERT().
>
>
> - If an error would be returned, then the function
> will also ASSERT().
>
>
>
>
>
> If an error is returned, then the Destination is
> unmodified.
>
>
>
>
>
> @@ -372,7 +369,6 @@ StrnCpyS (
>
>
>
> If Destination is not aligned on a 16-bit boundary,
> then ASSERT().
>
>
> If Source is not aligned on a 16-bit boundary, then
> ASSERT().
>
>
> - If an error would be returned, then the function
> will also ASSERT().
>
>
>
>
>
> If an error is returned, then the Destination is
> unmodified.
>
>
>
>
>
> @@ -473,7 +469,6 @@ StrCatS (
>
>
>
> If Destination is not aligned on a 16-bit boundary,
> then ASSERT().
>
>
> If Source is not aligned on a 16-bit boundary, then
> ASSERT().
>
>
> - If an error would be returned, then the function
> will also ASSERT().
>
>
>
>
>
> If an error is returned, then the Destination is
> unmodified.
>
>
>
>
>
> @@ -590,12 +585,7 @@ StrnCatS (
> be ignored. Then, the function stops at the first
> character that is a not a
>
>
> valid decimal character or a Null-terminator,
> whichever one comes first.
>
>
>
>
>
> - If String is NULL, then ASSERT().
>
>
> - If Data is NULL, then ASSERT().
>
>
> If String is not aligned in 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 String has no valid decimal digits in the above
> format, then 0 is stored
>
>
> at the location pointed to by Data.
>
>
> @@ -705,12 +695,7 @@ StrDecimalToUintnS (
> be ignored. Then, the function stops at the first
> character that is a not a
>
>
> valid decimal character or a Null-terminator,
> whichever one comes first.
>
>
>
>
>
> - If String is NULL, then ASSERT().
>
>
> - If Data is NULL, then ASSERT().
>
>
> If String is not aligned in 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 String has no valid decimal digits in the above
> format, then 0 is stored
>
>
> at the location pointed to by Data.
>
>
> @@ -825,12 +810,7 @@ StrDecimalToUint64S (
> the first character that is a not a valid
> hexadecimal character or NULL,
>
>
> whichever one comes first.
>
>
>
>
>
> - If String is NULL, then ASSERT().
>
>
> - If Data is NULL, then ASSERT().
>
>
> If String is not aligned in 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 String has no valid hexadecimal digits in the
> above format, then 0 is
>
>
> stored at the location pointed to by Data.
>
>
> @@ -956,12 +936,7 @@ StrHexToUintnS (
> the first character that is a not a valid
> hexadecimal character or NULL,
>
>
> whichever one comes first.
>
>
>
>
>
> - If String is NULL, then ASSERT().
>
>
> - If Data is NULL, then ASSERT().
>
>
> If String is not aligned in 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 String has no valid hexadecimal digits in the
> above format, then 0 is
>
>
> stored at the location pointed to by Data.
>
>
> @@ -1091,16 +1066,8 @@ StrHexToUint64S (
> "::" can be used to compress one or more groups of X
> when X contains only 0.
>
>
> The "::" can only appear once in the String.
>
>
>
>
>
> - If String is NULL, then ASSERT().
>
>
> -
>
>
> - If Address is NULL, then ASSERT().
>
>
> -
>
>
> If String is not aligned in 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 EndPointer is not NULL and Address is translated
> from String, a pointer
>
>
> to the character that stopped the scan is stored at
> the location pointed to
>
>
> by EndPointer.
>
>
> @@ -1317,16 +1284,8 @@ StrToIpv6Address (
> When /P is in the String, the function stops at the
> first character that is not
>
>
> a valid decimal digit character after P is
> converted.
>
>
>
>
>
> - If String is NULL, then ASSERT().
>
>
> -
>
>
> - If Address is NULL, then ASSERT().
>
>
> -
>
>
> If String is not aligned in 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 EndPointer is not NULL and Address is translated
> from String, a pointer
>
>
> to the character that stopped the scan is stored at
> the location pointed to
>
>
> by EndPointer.
>
>
> @@ -1482,8 +1441,6 @@ StrToIpv4Address (
> oo Data4[48:55]
>
>
> pp Data4[56:63]
>
>
>
>
>
> - If String is NULL, then ASSERT().
>
>
> - If Guid is NULL, then ASSERT().
>
>
> If String is not aligned in a 16-bit boundary, then
> ASSERT().
>
>
>
>
>
> @param String Pointer to a Null-
> terminated Unicode string.
>
>
> @@ -1589,17 +1546,6 @@ StrToGuid (
>
>
>
> If String is not aligned in a 16-bit boundary, then
> ASSERT().
>
>
>
>
>
> - If String is NULL, then ASSERT().
>
>
> -
>
>
> - If Buffer is NULL, then ASSERT().
>
>
> -
>
>
> - If Length is not multiple of 2, then ASSERT().
>
>
> -
>
>
> - If PcdMaximumUnicodeStringLength is not zero and
> Length is greater than
>
>
> - PcdMaximumUnicodeStringLength, then ASSERT().
>
>
> -
>
>
> - If MaxBufferSize is less than (Length / 2), then
> ASSERT().
>
>
> -
>
>
> @param String Pointer to a Null-
> terminated Unicode string.
>
>
> @param Length The number of
> Unicode characters to decode.
>
>
> @param Buffer Pointer to the
> converted bytes array.
>
>
> @@ -1779,8 +1725,6 @@ AsciiStrnSizeS (
>
>
>
> This function is similar as strcpy_s defined in C11.
>
>
>
>
>
> - If an error would be returned, then the function
> will also ASSERT().
>
>
> -
>
>
> If an error is returned, then the Destination is
> unmodified.
>
>
>
>
>
> @param Destination A pointer to a
> Null-terminated Ascii string.
>
>
> @@ -1856,8 +1800,6 @@ AsciiStrCpyS (
>
>
>
> This function is similar as strncpy_s defined in
> C11.
>
>
>
>
>
> - If an error would be returned, then the function
> will also ASSERT().
>
>
> -
>
>
> If an error is returned, then the Destination is
> unmodified.
>
>
>
>
>
> @param Destination A pointer to a
> Null-terminated Ascii string.
>
>
> @@ -1944,8 +1886,6 @@ AsciiStrnCpyS (
>
>
>
> This function is similar as strcat_s defined in C11.
>
>
>
>
>
> - If an error would be returned, then the function
> will also ASSERT().
>
>
> -
>
>
> If an error is returned, then the Destination is
> unmodified.
>
>
>
>
>
> @param Destination A pointer to a
> Null-terminated Ascii string.
>
>
> @@ -2040,8 +1980,6 @@ AsciiStrCatS (
>
>
>
> This function is similar as strncat_s defined in
> C11.
>
>
>
>
>
> - If an error would be returned, then the function
> will also ASSERT().
>
>
> -
>
>
> If an error is returned, then the Destination is
> unmodified.
>
>
>
>
>
> @param Destination A pointer to a
> Null-terminated Ascii string.
>
>
> @@ -2154,12 +2092,6 @@ AsciiStrnCatS (
> be ignored. Then, the function stops at the first
> character that is a not a
>
>
> valid decimal character or a Null-terminator,
> whichever one comes first.
>
>
>
>
>
> - If String is NULL, then ASSERT().
>
>
> - If Data 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 String has no valid decimal digits in the above
> format, then 0 is stored
>
>
> at the location pointed to by Data.
>
>
> If the number represented by String exceeds the
> range defined by UINTN, then
>
>
> @@ -2266,12 +2198,6 @@ AsciiStrDecimalToUintnS (
> be ignored. Then, the function stops at the first
> character that is a not a
>
>
> valid decimal character or a Null-terminator,
> whichever one comes first.
>
>
>
>
>
> - If String is NULL, then ASSERT().
>
>
> - If Data 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 String has no valid decimal digits in the above
> format, then 0 is stored
>
>
> at the location pointed to by Data.
>
>
> If the number represented by String exceeds the
> range defined by UINT64, then
>
>
> @@ -2382,12 +2308,6 @@ AsciiStrDecimalToUint64S (
> character that is a not a valid hexadecimal
> character or Null-terminator,
>
>
> whichever on comes first.
>
>
>
>
>
> - If String is NULL, then ASSERT().
>
>
> - If Data 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 String has no valid hexadecimal digits in the
> above format, then 0 is
>
>
> stored at the location pointed to by Data.
>
>
> If the number represented by String exceeds the
> range defined by UINTN, then
>
>
> @@ -2509,12 +2429,6 @@ AsciiStrHexToUintnS (
> character that is a not a valid hexadecimal
> character or Null-terminator,
>
>
> whichever on comes first.
>
>
>
>
>
> - If String is NULL, then ASSERT().
>
>
> - If Data 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 String has no valid hexadecimal digits in the
> above format, then 0 is
>
>
> stored at the location pointed to by Data.
>
>
> If the number represented by String exceeds the
> range defined by UINT64, then
>
>
> @@ -2635,7 +2549,6 @@ AsciiStrHexToUint64S (
> the upper 8 bits, then ASSERT().
>
>
>
>
>
> If Source is not aligned on a 16-bit boundary, then
> ASSERT().
>
>
> - If an error would be returned, then the function
> will also ASSERT().
>
>
>
>
>
> If an error is returned, then the Destination is
> unmodified.
>
>
>
>
>
> @@ -2735,7 +2648,6 @@ UnicodeStrToAsciiStrS (
> If any Unicode characters in Source contain non-zero
> value in the upper 8
>
>
> bits, then ASSERT().
>
>
> If Source is not aligned on a 16-bit boundary, then
> ASSERT().
>
>
> - If an error would be returned, then the function
> will also ASSERT().
>
>
>
>
>
> If an error is returned, then Destination and
> DestinationLength are
>
>
> unmodified.
>
>
> @@ -2855,7 +2767,6 @@ UnicodeStrnToAsciiStrS (
> equal or greater than ((AsciiStrLen (Source) + 1) *
> sizeof (CHAR16)) in bytes.
>
>
>
>
>
> If Destination is not aligned on a 16-bit boundary,
> then ASSERT().
>
>
> - If an error would be returned, then the function
> will also ASSERT().
>
>
>
>
>
> If an error is returned, then the Destination is
> unmodified.
>
>
>
>
>
> @@ -2948,7 +2859,6 @@ AsciiStrToUnicodeStrS (
> ((MIN(AsciiStrLen(Source), Length) + 1) * sizeof
> (CHAR8)) in bytes.
>
>
>
>
>
> If Destination is not aligned on a 16-bit boundary,
> then ASSERT().
>
>
> - If an error would be returned, then the function
> will also ASSERT().
>
>
>
>
>
> If an error is returned, then Destination and
> DestinationLength are
>
>
> unmodified.
>
>
> @@ -3072,10 +2982,6 @@ AsciiStrnToUnicodeStrS (
> "::" can be used to compress one or more groups of X
> when X contains only 0.
>
>
> The "::" can only appear once in the String.
>
>
>
>
>
> - If String is NULL, then ASSERT().
>
>
> -
>
>
> - If Address is NULL, then ASSERT().
>
>
> -
>
>
> If EndPointer is not NULL and Address is translated
> from String, a pointer
>
>
> to the character that stopped the scan is stored at
> the location pointed to
>
>
> by EndPointer.
>
>
> @@ -3291,10 +3197,6 @@ AsciiStrToIpv6Address (
> When /P is in the String, the function stops at the
> first character that is not
>
>
> a valid decimal digit character after P is
> converted.
>
>
>
>
>
> - If String is NULL, then ASSERT().
>
>
> -
>
>
> - If Address is NULL, then ASSERT().
>
>
> -
>
>
> If EndPointer is not NULL and Address is translated
> from String, a pointer
>
>
> to the character that stopped the scan is stored at
> the location pointed to
>
>
> by EndPointer.
>
>
> @@ -3448,9 +3350,6 @@ AsciiStrToIpv4Address (
> oo Data4[48:55]
>
>
> pp Data4[56:63]
>
>
>
>
>
> - If String is NULL, then ASSERT().
>
>
> - If Guid is NULL, then ASSERT().
>
>
> -
>
>
> @param String Pointer to a Null-
> terminated ASCII string.
>
>
> @param Guid Pointer to the
> converted GUID.
>
>
>
>
>
> @@ -3550,17 +3449,6 @@ AsciiStrToGuid (
> decoding stops after Length of characters and
> outputs Buffer containing
>
>
> (Length / 2) bytes.
>
>
>
>
>
> - If String is NULL, then ASSERT().
>
>
> -
>
>
> - If Buffer is NULL, then ASSERT().
>
>
> -
>
>
> - If Length is not multiple of 2, then ASSERT().
>
>
> -
>
>
> - If PcdMaximumAsciiStringLength is not zero and
> Length is greater than
>
>
> - PcdMaximumAsciiStringLength, then ASSERT().
>
>
> -
>
>
> - If MaxBufferSize is less than (Length / 2), then
> ASSERT().
>
>
> -
>
>
> @param String Pointer to a Null-
> terminated ASCII string.
>
>
> @param Length The number of ASCII
> characters to decode.
>
>
> @param Buffer Pointer to the
> converted bytes array.
>
>
> --
> 2.24.2 (Apple Git-127)
>
>
>
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#59752): https://edk2.groups.io/g/devel/message/59752
Mute This Topic: https://groups.io/mt/74210304/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-
More information about the edk2-devel-archive
mailing list