From 787f6744e751b011af3348a528d5f2c4919ff1d8 Mon Sep 17 00:00:00 2001 From: Ruiyu Ni Date: Tue, 21 Feb 2017 17:04:29 +0800 Subject: MdeModulePkg/CapsuleApp: Use StrToGuid in BaseLib Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ruiyu Ni Reviewed-by: Jiewen Yao --- MdeModulePkg/Application/CapsuleApp/AppSupport.c | 140 +---------------------- MdeModulePkg/Application/CapsuleApp/CapsuleApp.c | 27 +---- 2 files changed, 6 insertions(+), 161 deletions(-) diff --git a/MdeModulePkg/Application/CapsuleApp/AppSupport.c b/MdeModulePkg/Application/CapsuleApp/AppSupport.c index edc5f29c47..e39ab20378 100644 --- a/MdeModulePkg/Application/CapsuleApp/AppSupport.c +++ b/MdeModulePkg/Application/CapsuleApp/AppSupport.c @@ -1,7 +1,7 @@ /** @file A shell application that triggers capsule update process. - Copyright (c) 2016, Intel Corporation. All rights reserved.
+ Copyright (c) 2016 - 2017, 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 @@ -63,144 +63,6 @@ GetArg ( 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 -InternalStrToBuf ( - OUT UINT8 *Buf, - IN UINTN BufferLength, - IN CHAR16 *Str - ) -{ - UINTN Index; - UINTN StrLength; - UINT8 Digit; - UINT8 Byte; - - Digit = 0; - - // - // Two hex char make up one byte - // - StrLength = BufferLength * sizeof (CHAR16); - - for(Index = 0; Index < StrLength; Index++, Str++) { - - if ((*Str >= L'a') && (*Str <= L'f')) { - Digit = (UINT8) (*Str - L'a' + 0x0A); - } else if ((*Str >= L'A') && (*Str <= L'F')) { - Digit = (UINT8) (*Str - L'A' + 0x0A); - } else if ((*Str >= L'0') && (*Str <= L'9')) { - Digit = (UINT8) (*Str - L'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 -InternalStrToGuid ( - IN CHAR16 *Str, - OUT EFI_GUID *Guid - ) -{ - // - // Get the first UINT32 data - // - Guid->Data1 = (UINT32) StrHexToUint64 (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) StrHexToUint64 (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) StrHexToUint64 (Str); - while (!IS_HYPHEN (*Str) && !IS_NULL (*Str)) { - Str ++; - } - - if (IS_HYPHEN (*Str)) { - Str++; - } else { - return EFI_UNSUPPORTED; - } - - // - // Get the following 8 bytes data - // - InternalStrToBuf (&Guid->Data4[0], 2, Str); - // - // Skip 2 byte hex chars - // - Str += 2 * 2; - - if (IS_HYPHEN (*Str)) { - Str++; - } else { - return EFI_UNSUPPORTED; - } - InternalStrToBuf (&Guid->Data4[2], 6, Str); - - return EFI_SUCCESS; -} - /** Return File System Volume containing this shell application. diff --git a/MdeModulePkg/Application/CapsuleApp/CapsuleApp.c b/MdeModulePkg/Application/CapsuleApp/CapsuleApp.c index 5b8c147928..84ed4d738b 100644 --- a/MdeModulePkg/Application/CapsuleApp/CapsuleApp.c +++ b/MdeModulePkg/Application/CapsuleApp/CapsuleApp.c @@ -1,7 +1,7 @@ /** @file A shell application that triggers capsule update process. - Copyright (c) 2016, Intel Corporation. All rights reserved.
+ Copyright (c) 2016 - 2017, 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 @@ -142,24 +142,6 @@ WriteFileFromBuffer ( IN VOID *Buffer ); -/** - 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 -InternalStrToGuid ( - IN CHAR16 *Str, - OUT EFI_GUID *Guid - ); - /** This function parse application ARG. @@ -731,6 +713,7 @@ UefiMain ( ) { EFI_STATUS Status; + RETURN_STATUS RStatus; UINTN FileSize[MAX_CAPSULE_NUM]; VOID *CapsuleBuffer[MAX_CAPSULE_NUM]; EFI_CAPSULE_BLOCK_DESCRIPTOR *BlockDescriptors; @@ -782,10 +765,10 @@ UefiMain ( // // FMP->GetImage() // - Status = InternalStrToGuid(Argv[3], &ImageTypeId); - if (EFI_ERROR(Status)) { + RStatus = StrToGuid (Argv[3], &ImageTypeId); + if (RETURN_ERROR (RStatus) || (Argv[3][GUID_STRING_LENGTH] != L'\0')) { Print (L"Invalid ImageTypeId - %s\n", Argv[3]); - return Status; + return EFI_INVALID_PARAMETER; } ImageIndex = StrDecimalToUintn(Argv[4]); if (StrCmp(Argv[5], L"-O") == 0) { -- cgit v1.2.3