[edk2] [PATCH v2 07/11] MdeModulePkg/CapsuleApp: Use StrToGuid in BaseLib

Ruiyu Ni posted 11 patches 7 years, 8 months ago
[edk2] [PATCH v2 07/11] MdeModulePkg/CapsuleApp: Use StrToGuid in BaseLib
Posted by Ruiyu Ni 7 years, 8 months ago
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
---
 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 edc5f29..e39ab20 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.<BR>
+  Copyright (c) 2016 - 2017, Intel Corporation. All rights reserved.<BR>
   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
@@ -64,144 +64,6 @@ GetArg (
 }
 
 /**
-  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.
 
   @return File System Volume containing this shell application.
diff --git a/MdeModulePkg/Application/CapsuleApp/CapsuleApp.c b/MdeModulePkg/Application/CapsuleApp/CapsuleApp.c
index 5b8c147..84ed4d7 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.<BR>
+  Copyright (c) 2016 - 2017, Intel Corporation. All rights reserved.<BR>
   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
@@ -143,24 +143,6 @@ WriteFileFromBuffer (
   );
 
 /**
-  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) {
-- 
2.9.0.windows.1

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Re: [edk2] [PATCH v2 07/11] MdeModulePkg/CapsuleApp: Use StrToGuid in BaseLib
Posted by Yao, Jiewen 7 years, 8 months ago
Reviewed-by: jiewen.yao@intel.com

> -----Original Message-----
> From: Ni, Ruiyu
> Sent: Monday, February 27, 2017 3:23 PM
> To: edk2-devel@lists.01.org
> Cc: Yao, Jiewen <jiewen.yao@intel.com>
> Subject: [PATCH v2 07/11] MdeModulePkg/CapsuleApp: Use StrToGuid in BaseLib
> 
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
> Cc: Jiewen Yao <jiewen.yao@intel.com>
> ---
>  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 edc5f29..e39ab20 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.<BR>
> +  Copyright (c) 2016 - 2017, Intel Corporation. All rights reserved.<BR>
>    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
> @@ -64,144 +64,6 @@ GetArg (
>  }
> 
>  /**
> -  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.
> 
>    @return File System Volume containing this shell application.
> diff --git a/MdeModulePkg/Application/CapsuleApp/CapsuleApp.c
> b/MdeModulePkg/Application/CapsuleApp/CapsuleApp.c
> index 5b8c147..84ed4d7 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.<BR>
> +  Copyright (c) 2016 - 2017, Intel Corporation. All rights reserved.<BR>
>    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
> @@ -143,24 +143,6 @@ WriteFileFromBuffer (
>    );
> 
>  /**
> -  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) {
> --
> 2.9.0.windows.1

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel