It is the follow up of 3ab41b7a325ca11a12b42f5ad1661c4b6791cb49
to replace UnicodeStrToAsciiStr/AsciiStrToUnicodeStr with
UnicodeStrToAsciiStrS/AsciiStrToUnicodeStrS.

Cc: Jiewen Yao <jiewen....@intel.com>
Cc: Liming Gao <liming....@intel.com>
Cc: Eric Dong <eric.d...@intel.com>
Cc: Feng Tian <feng.t...@intel.com>
Cc: Ruiyu Ni <ruiyu...@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Star Zeng <star.z...@intel.com>
---
 MdeModulePkg/Application/UiApp/FrontPage.c         |  2 +-
 .../UiApp/FrontPageCustomizedUiSupport.c           |  6 ++-
 MdeModulePkg/Bus/Sd/EmmcDxe/EmmcDxe.c              |  2 +-
 MdeModulePkg/Bus/Sd/SdDxe/SdDxe.c                  |  2 +-
 MdeModulePkg/Library/DxeNetLib/DxeNetLib.c         | 18 ++++++---
 .../Library/UefiBootManagerLib/BmBootDescription.c |  4 +-
 .../Library/VarCheckHiiLib/VarCheckHiiGen.c        |  6 +--
 .../HiiDatabaseDxe/ConfigKeywordHandler.c          | 46 ++++++++++++++--------
 .../Universal/HiiDatabaseDxe/ConfigRouting.c       | 42 +++++++++++++-------
 9 files changed, 80 insertions(+), 48 deletions(-)

diff --git a/MdeModulePkg/Application/UiApp/FrontPage.c 
b/MdeModulePkg/Application/UiApp/FrontPage.c
index 1c0afa560a46..211afe413082 100644
--- a/MdeModulePkg/Application/UiApp/FrontPage.c
+++ b/MdeModulePkg/Application/UiApp/FrontPage.c
@@ -484,7 +484,7 @@ GetOptionalStringByIndex (
     *String = GetStringById (STRING_TOKEN (STR_MISSING_STRING));
   } else {
     *String = AllocatePool (StrSize * sizeof (CHAR16));
-    AsciiStrToUnicodeStr (OptionalStrStart, *String);
+    AsciiStrToUnicodeStrS (OptionalStrStart, *String, StrSize);
   }
 
   return EFI_SUCCESS;
diff --git a/MdeModulePkg/Application/UiApp/FrontPageCustomizedUiSupport.c 
b/MdeModulePkg/Application/UiApp/FrontPageCustomizedUiSupport.c
index dfb37ec9e100..500252cefcf8 100644
--- a/MdeModulePkg/Application/UiApp/FrontPageCustomizedUiSupport.c
+++ b/MdeModulePkg/Application/UiApp/FrontPageCustomizedUiSupport.c
@@ -247,6 +247,7 @@ UiCreateLanguageMenu (
 {
   CHAR8                       *LangCode;
   CHAR8                       *Lang;
+  UINTN                       LangSize;
   CHAR8                       *CurrentLang;
   UINTN                       OptionCount;
   CHAR16                      *StringBuffer;
@@ -316,9 +317,10 @@ UiCreateLanguageMenu (
       }
 
       if (EFI_ERROR (Status)) {
-        StringBuffer = AllocatePool (AsciiStrSize (Lang) * sizeof (CHAR16));
+        LangSize = AsciiStrSize (Lang);
+        StringBuffer = AllocatePool (LangSize * sizeof (CHAR16));
         ASSERT (StringBuffer != NULL);
-        AsciiStrToUnicodeStr (Lang, StringBuffer);
+        AsciiStrToUnicodeStrS (Lang, StringBuffer, LangSize);
       }
 
       ASSERT (StringBuffer != NULL);
diff --git a/MdeModulePkg/Bus/Sd/EmmcDxe/EmmcDxe.c 
b/MdeModulePkg/Bus/Sd/EmmcDxe/EmmcDxe.c
index 6e156e9cc30b..d3602a5000eb 100644
--- a/MdeModulePkg/Bus/Sd/EmmcDxe/EmmcDxe.c
+++ b/MdeModulePkg/Bus/Sd/EmmcDxe/EmmcDxe.c
@@ -231,7 +231,7 @@ GetEmmcModelName (
   String[sizeof (Cid->OemId) + sizeof (Cid->ProductName)] = ' ';
   CopyMem (String + sizeof (Cid->OemId) + sizeof (Cid->ProductName) + 1, 
Cid->ProductSerialNumber, sizeof (Cid->ProductSerialNumber));
 
-  AsciiStrToUnicodeStr (String, Device->ModelName);
+  AsciiStrToUnicodeStrS (String, Device->ModelName, sizeof (Device->ModelName) 
/ sizeof (Device->ModelName[0]));
 
   return EFI_SUCCESS;
 }
diff --git a/MdeModulePkg/Bus/Sd/SdDxe/SdDxe.c 
b/MdeModulePkg/Bus/Sd/SdDxe/SdDxe.c
index f657fb9c6e99..7c70c60a5025 100644
--- a/MdeModulePkg/Bus/Sd/SdDxe/SdDxe.c
+++ b/MdeModulePkg/Bus/Sd/SdDxe/SdDxe.c
@@ -161,7 +161,7 @@ GetSdModelName (
   String[sizeof (Cid->OemId) + sizeof (Cid->ProductName)] = ' ';
   CopyMem (String + sizeof (Cid->OemId) + sizeof (Cid->ProductName) + 1, 
Cid->ProductSerialNumber, sizeof (Cid->ProductSerialNumber));
 
-  AsciiStrToUnicodeStr (String, Device->ModelName);
+  AsciiStrToUnicodeStrS (String, Device->ModelName, sizeof (Device->ModelName) 
/ sizeof (Device->ModelName[0]));
 
   return EFI_SUCCESS;
 }
diff --git a/MdeModulePkg/Library/DxeNetLib/DxeNetLib.c 
b/MdeModulePkg/Library/DxeNetLib/DxeNetLib.c
index 4acd0fad2c4d..ef19439a4844 100644
--- a/MdeModulePkg/Library/DxeNetLib/DxeNetLib.c
+++ b/MdeModulePkg/Library/DxeNetLib/DxeNetLib.c
@@ -2976,18 +2976,20 @@ NetLibStrToIp4 (
   )
 {
   CHAR8                          *Ip4Str;
+  UINTN                          StringSize;
   EFI_STATUS                     Status;
 
   if ((String == NULL) || (Ip4Address == NULL)) {
     return EFI_INVALID_PARAMETER;
   }
 
-  Ip4Str = (CHAR8 *) AllocatePool ((StrLen (String) + 1) * sizeof (CHAR8));
+  StringSize = StrLen (String) + 1;
+  Ip4Str = (CHAR8 *) AllocatePool (StringSize * sizeof (CHAR8));
   if (Ip4Str == NULL) {
     return EFI_OUT_OF_RESOURCES;
   }
 
-  UnicodeStrToAsciiStr (String, Ip4Str);
+  UnicodeStrToAsciiStrS (String, Ip4Str, StringSize);
 
   Status = NetLibAsciiStrToIp4 (Ip4Str, Ip4Address);
 
@@ -3017,18 +3019,20 @@ NetLibStrToIp6 (
   )
 {
   CHAR8                          *Ip6Str;
+  UINTN                          StringSize;
   EFI_STATUS                     Status;
 
   if ((String == NULL) || (Ip6Address == NULL)) {
     return EFI_INVALID_PARAMETER;
   }
 
-  Ip6Str = (CHAR8 *) AllocatePool ((StrLen (String) + 1) * sizeof (CHAR8));
+  StringSize = StrLen (String) + 1;
+  Ip6Str = (CHAR8 *) AllocatePool (StringSize * sizeof (CHAR8));
   if (Ip6Str == NULL) {
     return EFI_OUT_OF_RESOURCES;
   }
 
-  UnicodeStrToAsciiStr (String, Ip6Str);
+  UnicodeStrToAsciiStrS (String, Ip6Str, StringSize);
 
   Status = NetLibAsciiStrToIp6 (Ip6Str, Ip6Address);
 
@@ -3060,6 +3064,7 @@ NetLibStrToIp6andPrefix (
   )
 {
   CHAR8                          *Ip6Str;
+  UINTN                          StringSize;
   CHAR8                          *PrefixStr;
   CHAR8                          *TempStr;
   EFI_STATUS                     Status;
@@ -3069,12 +3074,13 @@ NetLibStrToIp6andPrefix (
     return EFI_INVALID_PARAMETER;
   }
 
-  Ip6Str = (CHAR8 *) AllocatePool ((StrLen (String) + 1) * sizeof (CHAR8));
+  StringSize = StrLen (String) + 1;
+  Ip6Str = (CHAR8 *) AllocatePool (StringSize * sizeof (CHAR8));
   if (Ip6Str == NULL) {
     return EFI_OUT_OF_RESOURCES;
   }
 
-  UnicodeStrToAsciiStr (String, Ip6Str);
+  UnicodeStrToAsciiStrS (String, Ip6Str, StringSize);
 
   //
   // Get the sub string describing prefix length.
diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmBootDescription.c 
b/MdeModulePkg/Library/UefiBootManagerLib/BmBootDescription.c
index 69a2914d560e..066ea80a4754 100644
--- a/MdeModulePkg/Library/UefiBootManagerLib/BmBootDescription.c
+++ b/MdeModulePkg/Library/UefiBootManagerLib/BmBootDescription.c
@@ -215,7 +215,7 @@ BmGetDescriptionFromDiskInfo (
       StrPtr = (CHAR8 *) 
(&InquiryData.Reserved_5_95[VENDOR_IDENTIFICATION_OFFSET]);
       Temp = StrPtr[VENDOR_IDENTIFICATION_LENGTH];
       StrPtr[VENDOR_IDENTIFICATION_LENGTH] = '\0';
-      AsciiStrToUnicodeStr (StrPtr, Description);
+      AsciiStrToUnicodeStrS (StrPtr, Description, VENDOR_IDENTIFICATION_LENGTH 
+ 1);
       StrPtr[VENDOR_IDENTIFICATION_LENGTH] = Temp;
 
       //
@@ -225,7 +225,7 @@ BmGetDescriptionFromDiskInfo (
 
       StrPtr = (CHAR8 *) 
(&InquiryData.Reserved_5_95[PRODUCT_IDENTIFICATION_OFFSET]);
       StrPtr[PRODUCT_IDENTIFICATION_LENGTH] = '\0';
-      AsciiStrToUnicodeStr (StrPtr, Description + VENDOR_IDENTIFICATION_LENGTH 
+ 1);
+      AsciiStrToUnicodeStrS (StrPtr, Description + 
VENDOR_IDENTIFICATION_LENGTH + 1, PRODUCT_IDENTIFICATION_LENGTH + 1);
 
       BmEliminateExtraSpaces (Description);
     }
diff --git a/MdeModulePkg/Library/VarCheckHiiLib/VarCheckHiiGen.c 
b/MdeModulePkg/Library/VarCheckHiiLib/VarCheckHiiGen.c
index 725ccc7d782a..cab92967aa9a 100644
--- a/MdeModulePkg/Library/VarCheckHiiLib/VarCheckHiiGen.c
+++ b/MdeModulePkg/Library/VarCheckHiiLib/VarCheckHiiGen.c
@@ -1,7 +1,7 @@
 /** @file
   Var Check Hii bin generation.
 
-Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2015 - 2016, 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
@@ -1130,13 +1130,13 @@ CreateHiiVariableNode (
   //
   // Get variable name.
   //
-  VarNameSize = AsciiStrSize ((CHAR8 *) IfrEfiVarStore->Name) * 2;
+  VarNameSize = AsciiStrSize ((CHAR8 *) IfrEfiVarStore->Name) * sizeof 
(CHAR16);
   if (VarNameSize > mMaxVarNameSize) {
     mVarName = InternalVarCheckReallocatePool (mMaxVarNameSize, VarNameSize, 
mVarName);
     ASSERT (mVarName != NULL);
     mMaxVarNameSize = VarNameSize;
   }
-  AsciiStrToUnicodeStr ((CHAR8 *) IfrEfiVarStore->Name, mVarName);
+  AsciiStrToUnicodeStrS ((CHAR8 *) IfrEfiVarStore->Name, mVarName, 
mMaxVarNameSize / sizeof (CHAR16));
   VarName = mVarName;
 
   HiiVariableNode = FindHiiVariableNode (
diff --git a/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigKeywordHandler.c 
b/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigKeywordHandler.c
index 5e7aca96816e..03f814119993 100644
--- a/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigKeywordHandler.c
+++ b/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigKeywordHandler.c
@@ -178,6 +178,7 @@ ExtractNameSpace (
   )
 {
   CHAR16    *TmpPtr;
+  UINTN     NameSpaceSize;
 
   ASSERT (NameSpace != NULL);
 
@@ -218,11 +219,12 @@ ExtractNameSpace (
   // Input NameSpace is unicode string. The language in String package is 
ascii string.
   // Here will convert the unicode string to ascii and save it.
   //
-  *NameSpace = AllocatePool (StrLen (String) + 1);
+  NameSpaceSize = StrLen (String) + 1;
+  *NameSpace = AllocatePool (NameSpaceSize);
   if (*NameSpace == NULL) {
     return EFI_OUT_OF_RESOURCES;
   }
-  UnicodeStrToAsciiStr (String, *NameSpace);
+  UnicodeStrToAsciiStrS (String, *NameSpace, NameSpaceSize);
 
   if (TmpPtr != NULL) {
     *TmpPtr = L'&'; 
@@ -779,6 +781,7 @@ GetStringIdFromString (
   UINTN                                StringSize;
   CHAR16                               *String;
   CHAR8                                *AsciiKeywordValue;
+  UINTN                                KeywordValueSize;
   EFI_STATUS                           Status;
 
   ASSERT (StringPackage != NULL && KeywordValue != NULL && StringId != NULL);
@@ -794,11 +797,12 @@ GetStringIdFromString (
   //
   // Make a ascii keyword value for later use.
   //
-  AsciiKeywordValue = AllocatePool (StrLen (KeywordValue) + 1);
+  KeywordValueSize = StrLen (KeywordValue) + 1;
+  AsciiKeywordValue = AllocatePool (KeywordValueSize);
   if (AsciiKeywordValue == NULL) {
     return EFI_OUT_OF_RESOURCES;
   }
-  UnicodeStrToAsciiStr(KeywordValue, AsciiKeywordValue);
+  UnicodeStrToAsciiStrS (KeywordValue, AsciiKeywordValue, KeywordValueSize);
 
   while (*BlockHdr != EFI_HII_SIBT_END) {
     switch (*BlockHdr) {
@@ -1065,11 +1069,12 @@ GetNextStringId (
       StringTextPtr = BlockHdr + Offset;
       
       if (FindString) {
-        *KeywordValue = AllocatePool (AsciiStrSize ((CHAR8 *) StringTextPtr) * 
sizeof (CHAR16));
+        StringSize = AsciiStrSize ((CHAR8 *) StringTextPtr);
+        *KeywordValue = AllocatePool (StringSize * sizeof (CHAR16));
         if (*KeywordValue == NULL) {
           return 0;
         }
-        AsciiStrToUnicodeStr ((CHAR8 *) StringTextPtr, *KeywordValue);
+        AsciiStrToUnicodeStrS ((CHAR8 *) StringTextPtr, *KeywordValue, 
StringSize);
         return CurrentStringId;
       } else if (CurrentStringId == StringId) {
         FindString = TRUE;
@@ -1084,11 +1089,12 @@ GetNextStringId (
       StringTextPtr = BlockHdr + Offset;
       
       if (FindString) {
-        *KeywordValue = AllocatePool (AsciiStrSize ((CHAR8 *) StringTextPtr) * 
sizeof (CHAR16));
+        StringSize = AsciiStrSize ((CHAR8 *) StringTextPtr);
+        *KeywordValue = AllocatePool (StringSize * sizeof (CHAR16));
         if (*KeywordValue == NULL) {
           return 0;
         }
-        AsciiStrToUnicodeStr ((CHAR8 *) StringTextPtr, *KeywordValue);
+        AsciiStrToUnicodeStrS ((CHAR8 *) StringTextPtr, *KeywordValue, 
StringSize);
         return CurrentStringId;
       } else if (CurrentStringId == StringId) {
         FindString = TRUE;
@@ -1105,11 +1111,12 @@ GetNextStringId (
 
       for (Index = 0; Index < StringCount; Index++) {
         if (FindString) {
-          *KeywordValue = AllocatePool (AsciiStrSize ((CHAR8 *) StringTextPtr) 
* sizeof (CHAR16));
+          StringSize = AsciiStrSize ((CHAR8 *) StringTextPtr);
+          *KeywordValue = AllocatePool (StringSize * sizeof (CHAR16));
           if (*KeywordValue == NULL) {
             return 0;
           }
-          AsciiStrToUnicodeStr ((CHAR8 *) StringTextPtr, *KeywordValue);
+          AsciiStrToUnicodeStrS ((CHAR8 *) StringTextPtr, *KeywordValue, 
StringSize);
           return CurrentStringId;
         } else if (CurrentStringId == StringId) {
           FindString = TRUE;
@@ -1132,11 +1139,12 @@ GetNextStringId (
 
       for (Index = 0; Index < StringCount; Index++) {
         if (FindString) {
-          *KeywordValue = AllocatePool (AsciiStrSize ((CHAR8 *) StringTextPtr) 
* sizeof (CHAR16));
+          StringSize = AsciiStrSize ((CHAR8 *) StringTextPtr);
+          *KeywordValue = AllocatePool (StringSize * sizeof (CHAR16));
           if (*KeywordValue == NULL) {
             return 0;
           }
-          AsciiStrToUnicodeStr ((CHAR8 *) StringTextPtr, *KeywordValue);
+          AsciiStrToUnicodeStrS ((CHAR8 *) StringTextPtr, *KeywordValue, 
StringSize);
           return CurrentStringId;
         } else if (CurrentStringId == StringId) {
           FindString = TRUE;
@@ -1670,6 +1678,7 @@ ConstructConfigHdr (
   UINT8                     *Buffer;
   CHAR16                    *Name;
   CHAR8                     *AsciiName;
+  UINTN                     NameSize;
   EFI_GUID                  *Guid;
   UINTN                     MaxLen;
 
@@ -1699,9 +1708,10 @@ ConstructConfigHdr (
   }
 
   if (AsciiName != NULL) {
-    Name = AllocateZeroPool (AsciiStrSize (AsciiName) * 2);
+    NameSize = AsciiStrSize (AsciiName);
+    Name = AllocateZeroPool (NameSize * sizeof (CHAR16));
     ASSERT (Name != NULL);
-    AsciiStrToUnicodeStr(AsciiName, Name);
+    AsciiStrToUnicodeStrS (AsciiName, Name, NameSize);
   } else {
     Name = NULL;
   }
@@ -2375,6 +2385,7 @@ GenerateKeywordResp (
   CHAR16    *RespStr;
   CHAR16    *PathHdr;
   CHAR16    *UnicodeNameSpace;
+  UINTN     NameSpaceLength;
 
   ASSERT ((NameSpace != NULL) && (DevicePath != NULL) && (KeywordData != NULL) 
&& (ValueStr != NULL) && (KeywordResp != NULL));
 
@@ -2385,12 +2396,13 @@ GenerateKeywordResp (
   // 1.1 NameSpaceId size.
   // 'NAMESPACE='<String>
   //
-  RespStrLen = 10 + AsciiStrLen (NameSpace);
-  UnicodeNameSpace = AllocatePool ((AsciiStrLen (NameSpace) + 1) * sizeof 
(CHAR16));
+  NameSpaceLength = AsciiStrLen (NameSpace);
+  RespStrLen = 10 + NameSpaceLength;
+  UnicodeNameSpace = AllocatePool ((NameSpaceLength + 1) * sizeof (CHAR16));
   if (UnicodeNameSpace == NULL) {
     return EFI_OUT_OF_RESOURCES;
   }
-  AsciiStrToUnicodeStr(NameSpace, UnicodeNameSpace);
+  AsciiStrToUnicodeStrS (NameSpace, UnicodeNameSpace, NameSpaceLength + 1);
 
   //
   // 1.2 PathHdr size.
diff --git a/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c 
b/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c
index a704734b309b..106f25db118c 100644
--- a/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c
+++ b/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c
@@ -1604,6 +1604,7 @@ GetVarStoreType (
   UINTN                    PackageOffset;
   EFI_IFR_OP_HEADER        *IfrOpHdr;
   CHAR16                   *VarStoreName;
+  UINTN                    NameSize;
   EFI_STRING               GuidStr;
   EFI_STRING               NameStr;
   EFI_STRING               TempStr;
@@ -1658,12 +1659,13 @@ GetVarStoreType (
         continue;
       }
 
-      VarStoreName = AllocateZeroPool (AsciiStrSize ((CHAR8 
*)IfrEfiVarStore->Name) * sizeof (CHAR16));
+      NameSize = AsciiStrSize ((CHAR8 *)IfrEfiVarStore->Name);
+      VarStoreName = AllocateZeroPool (NameSize * sizeof (CHAR16));
       if (VarStoreName == NULL) {
         Status = EFI_OUT_OF_RESOURCES;
         goto Done;
       }
-      AsciiStrToUnicodeStr ((CHAR8 *) IfrEfiVarStore->Name, VarStoreName);
+      AsciiStrToUnicodeStrS ((CHAR8 *) IfrEfiVarStore->Name, VarStoreName, 
NameSize);
 
       GenerateSubStr (L"GUID=", sizeof (EFI_GUID), (VOID *) 
&IfrEfiVarStore->Guid, 1, &GuidStr);
       GenerateSubStr (L"NAME=", StrLen (VarStoreName) * sizeof (CHAR16), (VOID 
*) VarStoreName, 2, &NameStr);
@@ -1836,6 +1838,7 @@ IsThisPackageList (
   UINTN                    PackageOffset;
   EFI_IFR_OP_HEADER        *IfrOpHdr;
   CHAR16                   *VarStoreName;
+  UINTN                    NameSize;
   UINT8                    *HiiFormPackage;
   UINTN                    PackageSize;
   EFI_IFR_VARSTORE_EFI     *IfrEfiVarStore;
@@ -1880,11 +1883,12 @@ IsThisPackageList (
     case EFI_IFR_VARSTORE_OP:
       IfrVarStore = (EFI_IFR_VARSTORE *) IfrOpHdr;
 
-      VarStoreName = AllocateZeroPool (AsciiStrSize ((CHAR8 
*)IfrVarStore->Name) * sizeof (CHAR16));
+      NameSize = AsciiStrSize ((CHAR8 *)IfrVarStore->Name);
+      VarStoreName = AllocateZeroPool (NameSize * sizeof (CHAR16));
       if (VarStoreName == NULL) {
         goto Done;
       }
-      AsciiStrToUnicodeStr ((CHAR8 *)IfrVarStore->Name, VarStoreName);
+      AsciiStrToUnicodeStrS ((CHAR8 *)IfrVarStore->Name, VarStoreName, 
NameSize);
 
       if (IsThisVarstore((VOID *)&IfrVarStore->Guid, VarStoreName, ConfigHdr)) 
{
         FindVarstore = TRUE;
@@ -1897,11 +1901,12 @@ IsThisPackageList (
 
     case EFI_IFR_VARSTORE_EFI_OP:
       IfrEfiVarStore = (EFI_IFR_VARSTORE_EFI *) IfrOpHdr;
-      VarStoreName = AllocateZeroPool (AsciiStrSize ((CHAR8 
*)IfrEfiVarStore->Name) * sizeof (CHAR16));
+      NameSize = AsciiStrSize ((CHAR8 *)IfrEfiVarStore->Name);
+      VarStoreName = AllocateZeroPool (NameSize * sizeof (CHAR16));
       if (VarStoreName == NULL) {
         goto Done;
       }
-      AsciiStrToUnicodeStr ((CHAR8 *)IfrEfiVarStore->Name, VarStoreName);
+      AsciiStrToUnicodeStrS ((CHAR8 *)IfrEfiVarStore->Name, VarStoreName, 
NameSize);
 
       if (IsThisVarstore (&IfrEfiVarStore->Guid, VarStoreName, ConfigHdr)) {
         FindVarstore = TRUE;
@@ -2086,6 +2091,7 @@ ParseIfrData (
   IFR_DEFAULT_DATA         *DefaultDataPtr;
   IFR_BLOCK_DATA           *BlockData;
   CHAR16                   *VarStoreName;
+  UINTN                    NameSize;
   UINT16                   VarWidth;
   UINT16                   VarDefaultId;
   BOOLEAN                  FirstOneOfOption;
@@ -2144,12 +2150,13 @@ ParseIfrData (
 
       IfrVarStore = (EFI_IFR_VARSTORE *) IfrOpHdr;
 
-      VarStoreName = AllocateZeroPool (AsciiStrSize ((CHAR8 
*)IfrVarStore->Name) * sizeof (CHAR16));
+      NameSize = AsciiStrSize ((CHAR8 *)IfrVarStore->Name);
+      VarStoreName = AllocateZeroPool (NameSize * sizeof (CHAR16));
       if (VarStoreName == NULL) {
         Status = EFI_OUT_OF_RESOURCES;
         goto Done;
       }
-      AsciiStrToUnicodeStr ((CHAR8 *)IfrVarStore->Name, VarStoreName);
+      AsciiStrToUnicodeStrS ((CHAR8 *)IfrVarStore->Name, VarStoreName, 
NameSize);
 
       if (IsThisVarstore((VOID *)&IfrVarStore->Guid, VarStoreName, ConfigHdr)) 
{
         //
@@ -2185,12 +2192,13 @@ ParseIfrData (
         break;
       }
 
-      VarStoreName = AllocateZeroPool (AsciiStrSize ((CHAR8 
*)IfrEfiVarStore->Name) * sizeof (CHAR16));
+      NameSize = AsciiStrSize ((CHAR8 *)IfrEfiVarStore->Name);
+      VarStoreName = AllocateZeroPool (NameSize * sizeof (CHAR16));
       if (VarStoreName == NULL) {
         Status = EFI_OUT_OF_RESOURCES;
         goto Done;
       }
-      AsciiStrToUnicodeStr ((CHAR8 *)IfrEfiVarStore->Name, VarStoreName);
+      AsciiStrToUnicodeStrS ((CHAR8 *)IfrEfiVarStore->Name, VarStoreName, 
NameSize);
 
       if (IsThisVarstore (&IfrEfiVarStore->Guid, VarStoreName, ConfigHdr)) {
         //
@@ -3966,6 +3974,7 @@ GetConfigRespFromEfiVarStore (
 {
   EFI_STATUS Status;
   EFI_STRING VarStoreName;
+  UINTN      NameSize;
   UINT8      *VarStore;
   UINTN      BufferSize;
 
@@ -3974,13 +3983,14 @@ GetConfigRespFromEfiVarStore (
   VarStore        = NULL;
   VarStoreName    = NULL;
   *AccessProgress = Request;
-  
-  VarStoreName = AllocateZeroPool (AsciiStrSize ((CHAR8 
*)EfiVarStoreInfo->Name) * sizeof (CHAR16));
+
+  NameSize = AsciiStrSize ((CHAR8 *)EfiVarStoreInfo->Name);
+  VarStoreName = AllocateZeroPool (NameSize * sizeof (CHAR16));
   if (VarStoreName == NULL) {
     Status = EFI_OUT_OF_RESOURCES;
     goto Done;
   }
-  AsciiStrToUnicodeStr ((CHAR8 *) EfiVarStoreInfo->Name, VarStoreName);
+  AsciiStrToUnicodeStrS ((CHAR8 *) EfiVarStoreInfo->Name, VarStoreName, 
NameSize);
    
   
   Status = gRT->GetVariable (VarStoreName, &EfiVarStoreInfo->Guid, NULL, 
&BufferSize, NULL);
@@ -4041,6 +4051,7 @@ RouteConfigRespForEfiVarStore (
 {
   EFI_STATUS Status;
   EFI_STRING VarStoreName;
+  UINTN      NameSize;
   UINT8      *VarStore;
   UINTN      BufferSize;
   UINTN      BlockSize;
@@ -4050,12 +4061,13 @@ RouteConfigRespForEfiVarStore (
   VarStore     = NULL;
   VarStoreName = NULL;
 
-  VarStoreName = AllocateZeroPool (AsciiStrSize ((CHAR8 
*)EfiVarStoreInfo->Name) * sizeof (CHAR16));
+  NameSize = AsciiStrSize ((CHAR8 *)EfiVarStoreInfo->Name);
+  VarStoreName = AllocateZeroPool (NameSize * sizeof (CHAR16));
   if (VarStoreName == NULL) {
     Status = EFI_OUT_OF_RESOURCES;
     goto Done;
   }
-  AsciiStrToUnicodeStr ((CHAR8 *) EfiVarStoreInfo->Name, VarStoreName);
+  AsciiStrToUnicodeStrS ((CHAR8 *) EfiVarStoreInfo->Name, VarStoreName, 
NameSize);
       
   Status = gRT->GetVariable (VarStoreName, &EfiVarStoreInfo->Guid, NULL, 
&BufferSize, NULL);
   if (Status != EFI_BUFFER_TOO_SMALL) {
-- 
2.7.0.windows.1

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

Reply via email to