From 58974b6e079746fb9295d24297f62077cd05144f Mon Sep 17 00:00:00 2001 From: Ruiyu Ni Date: Tue, 21 Feb 2017 17:58:45 +0800 Subject: [PATCH 1/1] SignedCapsulePkg/IniParsingLib: Use AsciiStrToGuid in BaseLib Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ruiyu Ni Reviewed-by: Jiewen Yao --- .../Library/IniParsingLib/IniParsingLib.c | 146 +----------------- 1 file changed, 3 insertions(+), 143 deletions(-) diff --git a/SignedCapsulePkg/Library/IniParsingLib/IniParsingLib.c b/SignedCapsulePkg/Library/IniParsingLib/IniParsingLib.c index 16e1349936..5763e0494e 100644 --- a/SignedCapsulePkg/Library/IniParsingLib/IniParsingLib.c +++ b/SignedCapsulePkg/Library/IniParsingLib/IniParsingLib.c @@ -861,144 +861,6 @@ UpdateGetProfileString ( return EFI_SUCCESS; } -/** - Converts a list of string to a specified buffer. - - @param[out] Buf The output buffer that contains the string. - @param[in] BufferLength The length of the buffer - @param[in] Str The input string that contains the hex number - - @retval EFI_SUCCESS The string was successfully converted to the buffer. - -**/ -EFI_STATUS -AsciiStrToBuf ( - OUT UINT8 *Buf, - IN UINTN BufferLength, - IN CHAR8 *Str - ) -{ - UINTN Index; - UINTN StrLength; - UINT8 Digit; - UINT8 Byte; - - Digit = 0; - - // - // Two hex char make up one byte - // - StrLength = BufferLength * 2; - - for(Index = 0; Index < StrLength; Index++, Str++) { - - if ((*Str >= 'a') && (*Str <= 'f')) { - Digit = (UINT8) (*Str - 'a' + 0x0A); - } else if ((*Str >= 'A') && (*Str <= 'F')) { - Digit = (UINT8) (*Str - 'A' + 0x0A); - } else if ((*Str >= '0') && (*Str <= '9')) { - Digit = (UINT8) (*Str - '0'); - } else { - return EFI_INVALID_PARAMETER; - } - - // - // For odd characters, write the upper nibble for each buffer byte, - // and for even characters, the lower nibble. - // - if ((Index & 1) == 0) { - Byte = (UINT8) (Digit << 4); - } else { - Byte = Buf[Index / 2]; - Byte &= 0xF0; - Byte = (UINT8) (Byte | Digit); - } - - Buf[Index / 2] = Byte; - } - - return EFI_SUCCESS; -} - -/** - Converts a string to GUID value. - Guid Format is xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx - - @param[in] Str The registry format GUID string that contains the GUID value. - @param[out] Guid A pointer to the converted GUID value. - - @retval EFI_SUCCESS The GUID string was successfully converted to the GUID value. - @retval EFI_UNSUPPORTED The input string is not in registry format. - @return others Some error occurred when converting part of GUID value. - -**/ -EFI_STATUS -IniAsciiStrToGuid ( - IN CHAR8 *Str, - OUT EFI_GUID *Guid - ) -{ - // - // Get the first UINT32 data - // - Guid->Data1 = (UINT32) AsciiStrHexToUint64 (Str); - while (!IS_HYPHEN (*Str) && !IS_NULL (*Str)) { - Str ++; - } - - if (IS_HYPHEN (*Str)) { - Str++; - } else { - return EFI_UNSUPPORTED; - } - - // - // Get the second UINT16 data - // - Guid->Data2 = (UINT16) AsciiStrHexToUint64 (Str); - while (!IS_HYPHEN (*Str) && !IS_NULL (*Str)) { - Str ++; - } - - if (IS_HYPHEN (*Str)) { - Str++; - } else { - return EFI_UNSUPPORTED; - } - - // - // Get the third UINT16 data - // - Guid->Data3 = (UINT16) AsciiStrHexToUint64 (Str); - while (!IS_HYPHEN (*Str) && !IS_NULL (*Str)) { - Str ++; - } - - if (IS_HYPHEN (*Str)) { - Str++; - } else { - return EFI_UNSUPPORTED; - } - - // - // Get the following 8 bytes data - // - AsciiStrToBuf (&Guid->Data4[0], 2, Str); - // - // Skip 2 byte hex chars - // - Str += 2 * 2; - - if (IS_HYPHEN (*Str)) { - Str++; - } else { - return EFI_UNSUPPORTED; - } - AsciiStrToBuf (&Guid->Data4[2], 6, Str); - - return EFI_SUCCESS; -} - /** Pre process config data buffer into Section entry list and Comment entry list. @@ -1243,6 +1105,7 @@ GetGuidFromDataFile ( { CHAR8 *Value; EFI_STATUS Status; + RETURN_STATUS RStatus; if (Context == NULL || SectionName == NULL || EntryName == NULL || Guid == NULL) { return EFI_INVALID_PARAMETER; @@ -1258,11 +1121,8 @@ GetGuidFromDataFile ( return EFI_NOT_FOUND; } ASSERT (Value != NULL); - if (!IsValidGuid(Value, AsciiStrLen(Value))) { - return EFI_NOT_FOUND; - } - Status = IniAsciiStrToGuid(Value, Guid); - if (EFI_ERROR (Status)) { + RStatus = AsciiStrToGuid (Value, Guid); + if (RETURN_ERROR (RStatus) || (Value[GUID_STRING_LENGTH] != '\0')) { return EFI_NOT_FOUND; } return EFI_SUCCESS; -- 2.39.2