MdeModulePkg: Replace [Ascii|Unicode]ValueToString
authorHao Wu <hao.a.wu@intel.com>
Wed, 18 Jan 2017 02:31:02 +0000 (10:31 +0800)
committerHao Wu <hao.a.wu@intel.com>
Thu, 2 Mar 2017 01:58:11 +0000 (09:58 +0800)
It is the follow up of commits 51f0ceb..9e32e97 to replace
AsciiValueToString/UnicodeValueToString with
AsciiValueToStringS/UnicodeValueToStringS.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
Reviewed-by: Star Zeng <star.zeng@intel.com>
15 files changed:
MdeModulePkg/Application/UiApp/FrontPage.c
MdeModulePkg/Library/BootMaintenanceManagerUiLib/UpdatePage.c
MdeModulePkg/Library/DeviceManagerUiLib/DeviceManager.c
MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleReportLib.c
MdeModulePkg/Library/DxeNetLib/DxeNetLib.c
MdeModulePkg/Library/UefiHiiLib/HiiLib.c
MdeModulePkg/Universal/CapsulePei/UefiCapsule.c
MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleService.c
MdeModulePkg/Universal/DriverSampleDxe/DriverSample.c
MdeModulePkg/Universal/HiiDatabaseDxe/ConfigKeywordHandler.c
MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c
MdeModulePkg/Universal/Network/VlanConfigDxe/VlanConfigImpl.c
MdeModulePkg/Universal/SetupBrowserDxe/Expression.c
MdeModulePkg/Universal/SetupBrowserDxe/IfrParse.c
MdeModulePkg/Universal/SetupBrowserDxe/Setup.c

index bda5ff9..ad5af2c 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   FrontPage routines to handle the callbacks and browser calls\r
 \r
-Copyright (c) 2004 - 2016, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2004 - 2017, Intel Corporation. All rights reserved.<BR>\r
 This program and the accompanying materials\r
 are licensed and made available under the terms and conditions of the BSD License\r
 which accompanies this distribution.  The full text of the license may be found at\r
@@ -408,9 +408,16 @@ ConvertProcessorToString (
   DestMax = 0x20 / sizeof (CHAR16);\r
   StringBuffer = AllocateZeroPool (0x20);\r
   ASSERT (StringBuffer != NULL);\r
-  Index = UnicodeValueToString (StringBuffer, LEFT_JUSTIFY, FreqMhz / 1000, 3);\r
+  UnicodeValueToStringS (StringBuffer, sizeof (CHAR16) * DestMax, LEFT_JUSTIFY, FreqMhz / 1000, 3);\r
+  Index = StrnLenS (StringBuffer, DestMax);\r
   StrCatS (StringBuffer, DestMax, L".");\r
-  UnicodeValueToString (StringBuffer + Index + 1, PREFIX_ZERO, (FreqMhz % 1000) / 10, 2);\r
+  UnicodeValueToStringS (\r
+    StringBuffer + Index + 1,\r
+    sizeof (CHAR16) * (DestMax - (Index + 1)),\r
+    PREFIX_ZERO,\r
+    (FreqMhz % 1000) / 10,\r
+    2\r
+    );\r
   StrCatS (StringBuffer, DestMax, L" GHz");\r
   *String = (CHAR16 *) StringBuffer;\r
   return ;\r
@@ -434,7 +441,7 @@ ConvertMemorySizeToString (
 \r
   StringBuffer = AllocateZeroPool (0x24);\r
   ASSERT (StringBuffer != NULL);\r
-  UnicodeValueToString (StringBuffer, LEFT_JUSTIFY, MemorySize, 10);\r
+  UnicodeValueToStringS (StringBuffer, 0x24, LEFT_JUSTIFY, MemorySize, 10);\r
   StrCatS (StringBuffer, 0x24 / sizeof (CHAR16), L" MB RAM");\r
 \r
   *String = (CHAR16 *) StringBuffer;\r
index dede4b3..b3cc3c8 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
 Dynamically update the pages.\r
 \r
-Copyright (c) 2004 - 2016, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2004 - 2017, Intel Corporation. All rights reserved.<BR>\r
 This program and the accompanying materials\r
 are licensed and made available under the terms and conditions of the BSD License\r
 which accompanies this distribution.  The full text of the license may be found at\r
@@ -734,11 +734,17 @@ UpdateConModePage (
     //\r
     // Build mode string Column x Row\r
     //\r
-    UnicodeValueToString (ModeString, 0, Col, 0);\r
+    UnicodeValueToStringS (ModeString, sizeof (ModeString), 0, Col, 0);\r
     PStr = &ModeString[0];\r
     StrnCatS (PStr, ARRAY_SIZE (ModeString), L" x ", StrLen(L" x ") + 1);\r
     PStr = PStr + StrLen (PStr);\r
-    UnicodeValueToString (PStr , 0, Row, 0);\r
+    UnicodeValueToStringS (\r
+      PStr,\r
+      sizeof (ModeString) - ((UINTN)PStr - (UINTN)&ModeString[0]),\r
+      0,\r
+      Row,\r
+      0\r
+      );\r
 \r
     ModeToken[Index] = HiiSetString (CallbackData->BmmHiiHandle, 0, ModeString, NULL);\r
 \r
index 0de4e3c..5098b70 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
 The device manager reference implementation\r
 \r
-Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2004 - 2017, Intel Corporation. All rights reserved.<BR>\r
 This program and the accompanying materials\r
 are licensed and made available under the terms and conditions of the BSD License\r
 which accompanies this distribution.  The full text of the license may be found at\r
@@ -148,7 +148,14 @@ GetMacAddressString(
   //\r
   HwAddress = &MacAddressNode->MacAddress.Addr[0];\r
   for (Index = 0; Index < HwAddressSize; Index++) {\r
-    String += UnicodeValueToString (String, PREFIX_ZERO | RADIX_HEX, *(HwAddress++), 2);\r
+    UnicodeValueToStringS (\r
+      String,\r
+      BufferLen - ((UINTN)String - (UINTN)*PBuffer),\r
+      PREFIX_ZERO | RADIX_HEX,\r
+      *(HwAddress++),\r
+      2\r
+      );\r
+    String += StrnLenS (String, (BufferLen - ((UINTN)String - (UINTN)*PBuffer)) / sizeof (CHAR16));\r
     if (Index < HwAddressSize - 1) {\r
       *String++ = L':';\r
     }\r
@@ -168,7 +175,14 @@ GetMacAddressString(
 \r
   if (VlanId != 0) {\r
     *String++ = L'\\';\r
-    String += UnicodeValueToString (String, PREFIX_ZERO | RADIX_HEX, VlanId, 4);\r
+    UnicodeValueToStringS (\r
+      String,\r
+      BufferLen - ((UINTN)String - (UINTN)*PBuffer),\r
+      PREFIX_ZERO | RADIX_HEX,\r
+      VlanId,\r
+      4\r
+      );\r
+    String += StrnLenS (String, (BufferLen - ((UINTN)String - (UINTN)*PBuffer)) / sizeof (CHAR16));\r
   }\r
 \r
   //\r
index 3a9bb6e..fc0f869 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   DXE capsule report related function.\r
 \r
-  Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2016 - 2017, Intel Corporation. All rights reserved.<BR>\r
   This program and the accompanying materials\r
   are licensed and made available under the terms and conditions of the BSD License\r
   which accompanies this distribution.  The full text of the license may be found at\r
@@ -377,7 +377,13 @@ InitCapsuleUpdateVariable (
   Index = 0;\r
   while (TRUE) {\r
     if (Index > 0) {\r
-      UnicodeValueToString (TempVarName, 0, Index, 0);\r
+      UnicodeValueToStringS (\r
+        TempVarName,\r
+        sizeof (CapsuleVarName) - ((UINTN)TempVarName - (UINTN)CapsuleVarName),\r
+        0,\r
+        Index,\r
+        0\r
+        );\r
     }\r
     Status = gRT->SetVariable (\r
                     CapsuleVarName,\r
index 37b89f5..6066526 100644 (file)
@@ -2225,6 +2225,7 @@ NetLibGetMacString (
   UINT16                       VlanId;\r
   CHAR16                       *String;\r
   UINTN                        Index;\r
+  UINTN                        BufferSize;\r
 \r
   ASSERT (MacString != NULL);\r
 \r
@@ -2241,7 +2242,8 @@ NetLibGetMacString (
   // If VLAN is configured, it will need extra 5 characters like "\0005".\r
   // Plus one unicode character for the null-terminator.\r
   //\r
-  String = AllocateZeroPool ((2 * HwAddressSize + 5 + 1) * sizeof (CHAR16));\r
+  BufferSize = (2 * HwAddressSize + 5 + 1) * sizeof (CHAR16);\r
+  String = AllocateZeroPool (BufferSize);\r
   if (String == NULL) {\r
     return EFI_OUT_OF_RESOURCES;\r
   }\r
@@ -2252,7 +2254,14 @@ NetLibGetMacString (
   //\r
   HwAddress = &MacAddress.Addr[0];\r
   for (Index = 0; Index < HwAddressSize; Index++) {\r
-    String += UnicodeValueToString (String, PREFIX_ZERO | RADIX_HEX, *(HwAddress++), 2);\r
+    UnicodeValueToStringS (\r
+      String,\r
+      BufferSize - ((UINTN)String - (UINTN)*MacString),\r
+      PREFIX_ZERO | RADIX_HEX,\r
+      *(HwAddress++),\r
+      2\r
+      );\r
+    String += StrnLenS (String, (BufferSize - ((UINTN)String - (UINTN)*MacString)) / sizeof (CHAR16));\r
   }\r
 \r
   //\r
@@ -2261,7 +2270,14 @@ NetLibGetMacString (
   VlanId = NetLibGetVlanId (ServiceHandle);\r
   if (VlanId != 0) {\r
     *String++ = L'\\';\r
-    String += UnicodeValueToString (String, PREFIX_ZERO | RADIX_HEX, VlanId, 4);\r
+    UnicodeValueToStringS (\r
+      String,\r
+      BufferSize - ((UINTN)String - (UINTN)*MacString),\r
+      PREFIX_ZERO | RADIX_HEX,\r
+      VlanId,\r
+      4\r
+      );\r
+    String += StrnLenS (String, (BufferSize - ((UINTN)String - (UINTN)*MacString)) / sizeof (CHAR16));\r
   }\r
 \r
   //\r
index 8579501..b740d43 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   HII Library implementation that uses DXE protocols and services.\r
 \r
-  Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>\r
   This program and the accompanying materials\r
   are licensed and made available under the terms and conditions of the BSD License\r
   which accompanies this distribution.  The full text of the license may be found at\r
@@ -776,7 +776,14 @@ HiiConstructConfigHdr (
     // Append Guid converted to <HexCh>32\r
     //\r
     for (Index = 0, Buffer = (UINT8 *)Guid; Index < sizeof (EFI_GUID); Index++) {\r
-      String += UnicodeValueToString (String, PREFIX_ZERO | RADIX_HEX, *(Buffer++), 2);\r
+      UnicodeValueToStringS (\r
+        String,\r
+        MaxLen * sizeof (CHAR16) - ((UINTN)String - (UINTN)ReturnString),\r
+        PREFIX_ZERO | RADIX_HEX,\r
+        *(Buffer++),\r
+        2\r
+        );\r
+      String += StrnLenS (String, MaxLen - ((UINTN)String - (UINTN)ReturnString) / sizeof (CHAR16));\r
     }\r
   }\r
   \r
@@ -791,7 +798,14 @@ HiiConstructConfigHdr (
     // Append Name converted to <Char>NameLength\r
     //\r
     for (; *Name != L'\0'; Name++) {\r
-      String += UnicodeValueToString (String, PREFIX_ZERO | RADIX_HEX, *Name, 4);\r
+      UnicodeValueToStringS (\r
+        String,\r
+        sizeof (CHAR16) * MaxLen - ((UINTN)String - (UINTN)ReturnString),\r
+        PREFIX_ZERO | RADIX_HEX,\r
+        *Name,\r
+        4\r
+        );\r
+      String += StrnLenS (String, MaxLen - ((UINTN)String - (UINTN)ReturnString) / sizeof (CHAR16));\r
     }\r
   }\r
 \r
@@ -805,7 +819,14 @@ HiiConstructConfigHdr (
   // Append the device path associated with DriverHandle converted to <HexChar>DevicePathSize\r
   //\r
   for (Index = 0, Buffer = (UINT8 *)DevicePath; Index < DevicePathSize; Index++) {\r
-    String += UnicodeValueToString (String, PREFIX_ZERO | RADIX_HEX, *(Buffer++), 2);\r
+    UnicodeValueToStringS (\r
+      String,\r
+      sizeof (CHAR16) * MaxLen - ((UINTN)String - (UINTN)ReturnString),\r
+      PREFIX_ZERO | RADIX_HEX,\r
+      *(Buffer++),\r
+      2\r
+      );\r
+    String += StrnLenS (String, MaxLen - ((UINTN)String - (UINTN)ReturnString) / sizeof (CHAR16));\r
   }\r
 \r
   //\r
index 34b095a..d61d5ff 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   Capsule update PEIM for UEFI2.0\r
 \r
-Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>\r
 Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR>\r
 \r
 This program and the accompanying materials\r
@@ -777,7 +777,13 @@ GetCapsuleDescriptors (
           return EFI_SUCCESS;\r
         }\r
       } else {\r
-        UnicodeValueToString (TempVarName, 0, Index, 0);\r
+        UnicodeValueToStringS (\r
+          TempVarName,\r
+          sizeof (CapsuleVarName) - ((UINTN)TempVarName - (UINTN)CapsuleVarName),\r
+          0,\r
+          Index,\r
+          0\r
+          );\r
         Status = PPIVariableServices->GetVariable (\r
                                         PPIVariableServices,\r
                                         CapsuleVarName,\r
@@ -900,7 +906,13 @@ CapsuleCoalesce (
   TempVarName = CapsuleVarName + StrLen (CapsuleVarName);\r
   while (TRUE) {\r
     if (Index > 0) {\r
-      UnicodeValueToString (TempVarName, 0, Index, 0);\r
+      UnicodeValueToStringS (\r
+        TempVarName,\r
+        sizeof (CapsuleVarName) - ((UINTN)TempVarName - (UINTN)CapsuleVarName),\r
+        0,\r
+        Index,\r
+        0\r
+        );\r
     }\r
     Status = PPIVariableServices->GetVariable (\r
                                     PPIVariableServices,\r
index ed8820a..216798d 100644 (file)
@@ -4,7 +4,7 @@
   It installs the Capsule Architectural Protocol defined in PI1.0a to signify \r
   the capsule runtime services are ready.\r
 \r
-Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>\r
 This program and the accompanying materials\r
 are licensed and made available under the terms and conditions of the BSD License\r
 which accompanies this distribution.  The full text of the license may be found at\r
@@ -205,7 +205,13 @@ UpdateCapsule (
   StrCpyS (CapsuleVarName, sizeof(CapsuleVarName)/sizeof(CHAR16), EFI_CAPSULE_VARIABLE_NAME);\r
   TempVarName = CapsuleVarName + StrLen (CapsuleVarName);\r
   if (mTimes > 0) {\r
-    UnicodeValueToString (TempVarName, 0, mTimes, 0);\r
+    UnicodeValueToStringS (\r
+      TempVarName,\r
+      sizeof (CapsuleVarName) - ((UINTN)TempVarName - (UINTN)CapsuleVarName),\r
+      0,\r
+      mTimes,\r
+      0\r
+      );\r
   }\r
 \r
   //\r
index 67a40b7..f103b9c 100644 (file)
@@ -725,12 +725,14 @@ ExtractConfig (
 \r
       BackupChar = Value[ValueStrLen];\r
       *Value++   = L'=';\r
-      Value += UnicodeValueToString (\r
-                 Value, \r
-                 PREFIX_ZERO | RADIX_HEX, \r
-                 PrivateData->Configuration.NameValueVar0, \r
-                 sizeof (PrivateData->Configuration.NameValueVar0) * 2\r
-                 );\r
+      UnicodeValueToStringS (\r
+        Value,\r
+        BufferSize - ((UINTN)Value - (UINTN)*Results),\r
+        PREFIX_ZERO | RADIX_HEX,\r
+        PrivateData->Configuration.NameValueVar0,\r
+        sizeof (PrivateData->Configuration.NameValueVar0) * 2\r
+        );\r
+      Value += StrnLenS (Value, (BufferSize - ((UINTN)Value - (UINTN)*Results)) / sizeof (CHAR16));\r
       *Value = BackupChar;\r
     }\r
 \r
@@ -744,12 +746,14 @@ ExtractConfig (
 \r
       BackupChar = Value[ValueStrLen];\r
       *Value++   = L'=';\r
-      Value += UnicodeValueToString (\r
-                Value, \r
-                PREFIX_ZERO | RADIX_HEX, \r
-                PrivateData->Configuration.NameValueVar1, \r
-                sizeof (PrivateData->Configuration.NameValueVar1) * 2\r
-                );\r
+      UnicodeValueToStringS (\r
+        Value,\r
+        BufferSize - ((UINTN)Value - (UINTN)*Results),\r
+        PREFIX_ZERO | RADIX_HEX,\r
+        PrivateData->Configuration.NameValueVar1,\r
+        sizeof (PrivateData->Configuration.NameValueVar1) * 2\r
+        );\r
+      Value += StrnLenS (Value, (BufferSize - ((UINTN)Value - (UINTN)*Results)) / sizeof (CHAR16));\r
       *Value = BackupChar;\r
     }\r
 \r
@@ -767,7 +771,14 @@ ExtractConfig (
       //\r
       StrPointer = (CHAR16 *) PrivateData->Configuration.NameValueVar2;\r
       for (; *StrPointer != L'\0'; StrPointer++) {\r
-        Value += UnicodeValueToString (Value, PREFIX_ZERO | RADIX_HEX, *StrPointer, 4);\r
+        UnicodeValueToStringS (\r
+          Value,\r
+          BufferSize - ((UINTN)Value - (UINTN)*Results),\r
+          PREFIX_ZERO | RADIX_HEX,\r
+          *StrPointer,\r
+          4\r
+          );\r
+        Value += StrnLenS (Value, (BufferSize - ((UINTN)Value - (UINTN)*Results)) / sizeof (CHAR16));\r
       }\r
     }\r
     \r
index 8e23a51..1b48c1c 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
 Implementation of interfaces function for EFI_CONFIG_KEYWORD_HANDLER_PROTOCOL.\r
 \r
-Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2015 - 2017, Intel Corporation. All rights reserved.<BR>\r
 This program and the accompanying materials\r
 are licensed and made available under the terms and conditions of the BSD License\r
 which accompanies this distribution.  The full text of the license may be found at\r
@@ -1763,7 +1763,14 @@ ConstructConfigHdr (
     // Append Guid converted to <HexCh>32\r
     //\r
     for (Index = 0, Buffer = (UINT8 *)Guid; Index < sizeof (EFI_GUID); Index++) {\r
-      String += UnicodeValueToString (String, PREFIX_ZERO | RADIX_HEX, *(Buffer++), 2);\r
+      UnicodeValueToStringS (\r
+        String,\r
+        MaxLen * sizeof (CHAR16) - ((UINTN)String - (UINTN)ReturnString),\r
+        PREFIX_ZERO | RADIX_HEX,\r
+        *(Buffer++),\r
+        2\r
+        );\r
+      String += StrnLenS (String, MaxLen - ((UINTN)String - (UINTN)ReturnString) / sizeof (CHAR16));\r
     }\r
   }\r
   \r
@@ -1778,7 +1785,14 @@ ConstructConfigHdr (
     // Append Name converted to <Char>NameLength\r
     //\r
     for (; *Name != L'\0'; Name++) {\r
-      String += UnicodeValueToString (String, PREFIX_ZERO | RADIX_HEX, *Name, 4);\r
+      UnicodeValueToStringS (\r
+        String,\r
+        MaxLen * sizeof (CHAR16) - ((UINTN)String - (UINTN)ReturnString),\r
+        PREFIX_ZERO | RADIX_HEX,\r
+        *Name,\r
+        4\r
+        );\r
+      String += StrnLenS (String, MaxLen - ((UINTN)String - (UINTN)ReturnString) / sizeof (CHAR16));\r
     }\r
   }\r
 \r
@@ -1792,7 +1806,14 @@ ConstructConfigHdr (
   // Append the device path associated with DriverHandle converted to <HexChar>DevicePathSize\r
   //\r
   for (Index = 0, Buffer = (UINT8 *)DevicePath; Index < DevicePathSize; Index++) {\r
-    String += UnicodeValueToString (String, PREFIX_ZERO | RADIX_HEX, *(Buffer++), 2);\r
+    UnicodeValueToStringS (\r
+      String,\r
+      MaxLen * sizeof (CHAR16) - ((UINTN)String - (UINTN)ReturnString),\r
+      PREFIX_ZERO | RADIX_HEX,\r
+      *(Buffer++),\r
+      2\r
+      );\r
+    String += StrnLenS (String, MaxLen - ((UINTN)String - (UINTN)ReturnString) / sizeof (CHAR16));\r
   }\r
 \r
   //\r
index ccf4b5a..c9ff1cf 100644 (file)
@@ -264,7 +264,14 @@ GenerateSubStr (
     //\r
     TemBuffer = ((UINT8 *) Buffer);\r
     for (Index = 0; Index < BufferLen; Index ++, TemBuffer ++) {\r
-      TemString += UnicodeValueToString (TemString, PREFIX_ZERO | RADIX_HEX, *TemBuffer, 2);\r
+      UnicodeValueToStringS (\r
+        TemString,\r
+        sizeof (CHAR16) * (Length - StrnLenS (Str, Length)),\r
+        PREFIX_ZERO | RADIX_HEX,\r
+        *TemBuffer,\r
+        2\r
+        );\r
+      TemString += StrnLenS (TemString, Length - StrnLenS (Str, Length));\r
     }\r
     break;\r
   case 2:\r
@@ -277,7 +284,14 @@ GenerateSubStr (
     // Convert Unicode String to Config String, e.g. "ABCD" => "0041004200430044"\r
     //\r
     for (; *TemName != L'\0'; TemName++) {\r
-      TemString += UnicodeValueToString (TemString, PREFIX_ZERO | RADIX_HEX, *TemName, 4);\r
+      UnicodeValueToStringS (\r
+        TemString,\r
+        sizeof (CHAR16) * (Length - StrnLenS (Str, Length)),\r
+        PREFIX_ZERO | RADIX_HEX,\r
+        *TemName,\r
+        4\r
+        );\r
+      TemString += StrnLenS (TemString, Length - StrnLenS (Str, Length));\r
     }\r
     break;\r
   case 3:\r
@@ -286,7 +300,14 @@ GenerateSubStr (
     //\r
     TemBuffer = ((UINT8 *) Buffer) + BufferLen - 1;\r
     for (Index = 0; Index < BufferLen; Index ++, TemBuffer --) {\r
-      TemString += UnicodeValueToString (TemString, PREFIX_ZERO | RADIX_HEX, *TemBuffer, 2);\r
+      UnicodeValueToStringS (\r
+        TemString,\r
+        sizeof (CHAR16) * (Length - StrnLenS (Str, Length)),\r
+        PREFIX_ZERO | RADIX_HEX,\r
+        *TemBuffer,\r
+        2\r
+        );\r
+      TemString += StrnLenS (TemString, Length - StrnLenS (Str, Length));\r
     }\r
     break;\r
   default:\r
@@ -3712,7 +3733,14 @@ GenerateAltConfigResp (
           TmpBuffer = (UINT8 *) &(DefaultValueData->Value);\r
         }\r
         for (; Width > 0 && (TmpBuffer != NULL); Width--) {\r
-          StringPtr += UnicodeValueToString (StringPtr, PREFIX_ZERO | RADIX_HEX, TmpBuffer[Width - 1], 2);\r
+          UnicodeValueToStringS (\r
+            StringPtr,\r
+            Length * sizeof (CHAR16) - ((UINTN)StringPtr - (UINTN)*DefaultAltCfgResp),\r
+            PREFIX_ZERO | RADIX_HEX,\r
+            TmpBuffer[Width - 1],\r
+            2\r
+            );\r
+          StringPtr += StrnLenS (StringPtr, Length - ((UINTN)StringPtr - (UINTN)*DefaultAltCfgResp) / sizeof (CHAR16));\r
         }\r
         if (DefaultString != NULL){\r
           FreePool(DefaultString);\r
@@ -5403,7 +5431,14 @@ HiiBlockToConfig (
     TemString = ValueStr;\r
     TemBuffer = Value + Width - 1;\r
     for (Index = 0; Index < Width; Index ++, TemBuffer --) {\r
-      TemString += UnicodeValueToString (TemString, PREFIX_ZERO | RADIX_HEX, *TemBuffer, 2);\r
+      UnicodeValueToStringS (\r
+        TemString,\r
+        Length  * sizeof (CHAR16) - ((UINTN)TemString - (UINTN)ValueStr),\r
+        PREFIX_ZERO | RADIX_HEX,\r
+        *TemBuffer,\r
+        2\r
+        );\r
+      TemString += StrnLenS (TemString, Length - ((UINTN)TemString - (UINTN)ValueStr) / sizeof (CHAR16));\r
     }\r
 \r
     FreePool (Value);\r
index 5e0fe42..f035706 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   HII Config Access protocol implementation of VLAN configuration module.\r
 \r
-Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.<BR>\r
 This program and the accompanying materials\r
 are licensed and made available under the terms and conditions\r
 of the BSD License which accompanies this distribution.  The full\r
@@ -417,14 +417,22 @@ VlanUpdateForm (
     //\r
     // Pad VlanId string up to 4 characters with space\r
     //\r
-    DigitalCount = UnicodeValueToString (VlanIdStr, 0, VlanData[Index].VlanId, 5);\r
+    UnicodeValueToStringS (VlanIdStr, sizeof (VlanIdStr), 0, VlanData[Index].VlanId, 5);\r
+    DigitalCount = StrnLenS (VlanIdStr, ARRAY_SIZE (VlanIdStr));\r
     SetMem16 (String, (4 - DigitalCount) * sizeof (CHAR16), L' ');\r
     StrCpyS (String + 4 - DigitalCount, (sizeof (VlanStr) /sizeof (CHAR16)) - 10 - (4 - DigitalCount), VlanIdStr);\r
     String += 4;\r
 \r
     StrCpyS (String,  (sizeof (VlanStr) /sizeof (CHAR16)) - 10 - (4 - DigitalCount) - 4, L", Priority:");\r
     String += 11;\r
-    String += UnicodeValueToString (String, 0, VlanData[Index].Priority, 4);\r
+    UnicodeValueToStringS (\r
+      String,\r
+      sizeof (VlanStr) - ((UINTN)String - (UINTN)VlanStr),\r
+      0,\r
+      VlanData[Index].Priority,\r
+      4\r
+      );\r
+    String += StrnLenS (String, ARRAY_SIZE (VlanStr) - ((UINTN)String - (UINTN)VlanStr) / sizeof (CHAR16));\r
     *String = 0;\r
 \r
     StringId = HiiSetString (PrivateData->HiiHandle, 0, VlanStr, NULL);\r
index ec4d285..901b35c 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
 Utility functions for expression evaluation.\r
 \r
-Copyright (c) 2007 - 2016, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2007 - 2017, Intel Corporation. All rights reserved.<BR>\r
 This program and the accompanying materials\r
 are licensed and made available under the terms and conditions of the BSD License\r
 which accompanies this distribution.  The full text of the license may be found at\r
@@ -3143,7 +3143,14 @@ EvaluateExpression (
             TempBuffer = (UINT8 *) &Value->Value + OpCode->ValueWidth - 1;\r
             StrPtr = NameValue;\r
             for (Index = 0; Index < OpCode->ValueWidth; Index ++, TempBuffer --) {\r
-              StrPtr += UnicodeValueToString (StrPtr, PREFIX_ZERO | RADIX_HEX, *TempBuffer, 2);\r
+              UnicodeValueToStringS (\r
+                StrPtr,\r
+                (OpCode->ValueWidth * 2 + 1) * sizeof (CHAR16) - ((UINTN)StrPtr - (UINTN)NameValue),\r
+                PREFIX_ZERO | RADIX_HEX,\r
+                *TempBuffer,\r
+                2\r
+                );\r
+              StrPtr += StrnLenS (StrPtr, OpCode->ValueWidth * 2 + 1 - ((UINTN)StrPtr - (UINTN)NameValue) / sizeof (CHAR16));\r
             }\r
             Status = SetValueByName (OpCode->VarStorage, OpCode->ValueName, NameValue, GetSetValueWithEditBuffer, NULL);\r
             FreePool (NameValue);\r
index 61ba0b5..6b3e5e0 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
 Parser for IFR binary encoding.\r
 \r
-Copyright (c) 2007 - 2016, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2007 - 2017, Intel Corporation. All rights reserved.<BR>\r
 This program and the accompanying materials\r
 are licensed and made available under the terms and conditions of the BSD License\r
 which accompanies this distribution.  The full text of the license may be found at\r
@@ -116,7 +116,7 @@ UpdateCheckBoxStringToken (
   ASSERT (Statement != NULL);\r
   ASSERT (Statement->Operand == EFI_IFR_NUMERIC_OP);\r
 \r
-  UnicodeValueToString (Str, 0, Statement->VarStoreInfo.VarName, MAXIMUM_VALUE_CHARACTERS - 1);\r
+  UnicodeValueToStringS (Str, sizeof (Str), 0, Statement->VarStoreInfo.VarName, MAXIMUM_VALUE_CHARACTERS - 1);\r
 \r
   Id = HiiSetString (FormSet->HiiHandle, 0, Str, NULL);\r
   if (Id == 0) {\r
index 06e682a..83dc2b8 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
 Entry and initialization module for the browser.\r
 \r
-Copyright (c) 2007 - 2016, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2007 - 2017, Intel Corporation. All rights reserved.<BR>\r
 This program and the accompanying materials\r
 are licensed and made available under the terms and conditions of the BSD License\r
 which accompanies this distribution.  The full text of the license may be found at\r
@@ -1972,7 +1972,14 @@ SetQuestionValue (
         TemName = (CHAR16 *) Src;\r
         TemString = Value;\r
         for (; *TemName != L'\0'; TemName++) {\r
-          TemString += UnicodeValueToString (TemString, PREFIX_ZERO | RADIX_HEX, *TemName, 4);\r
+          UnicodeValueToStringS (\r
+            TemString,\r
+            BufferLen - ((UINTN)TemString - (UINTN)Value),\r
+            PREFIX_ZERO | RADIX_HEX,\r
+            *TemName,\r
+            4\r
+            );\r
+          TemString += StrnLenS (TemString, (BufferLen - ((UINTN)TemString - (UINTN)Value)) / sizeof (CHAR16));\r
         }\r
       } else {\r
         BufferLen = StorageWidth * 2 + 1;\r
@@ -1984,7 +1991,14 @@ SetQuestionValue (
         TemBuffer = Src + StorageWidth - 1;\r
         TemString = Value;\r
         for (Index = 0; Index < StorageWidth; Index ++, TemBuffer --) {\r
-          TemString += UnicodeValueToString (TemString, PREFIX_ZERO | RADIX_HEX, *TemBuffer, 2);\r
+          UnicodeValueToStringS (\r
+            TemString,\r
+            BufferLen * sizeof (CHAR16) - ((UINTN)TemString - (UINTN)Value),\r
+            PREFIX_ZERO | RADIX_HEX,\r
+            *TemBuffer,\r
+            2\r
+            );\r
+          TemString += StrnLenS (TemString, BufferLen - ((UINTN)TemString - (UINTN)Value) / sizeof (CHAR16));\r
         }\r
       }\r
 \r
@@ -2034,7 +2048,14 @@ SetQuestionValue (
       TemName = (CHAR16 *) Src;\r
       TemString = Value;\r
       for (; *TemName != L'\0'; TemName++) {\r
-        TemString += UnicodeValueToString (TemString, PREFIX_ZERO | RADIX_HEX, *TemName, 4);\r
+        UnicodeValueToStringS (\r
+          TemString,\r
+          MaxLen * sizeof (CHAR16) - ((UINTN)TemString - (UINTN)ConfigResp),\r
+          PREFIX_ZERO | RADIX_HEX,\r
+          *TemName,\r
+          4\r
+          );\r
+        TemString += StrnLenS (TemString, MaxLen - ((UINTN)TemString - (UINTN)ConfigResp) / sizeof (CHAR16));\r
       }\r
     } else {\r
       //\r
@@ -2043,7 +2064,14 @@ SetQuestionValue (
       TemBuffer = Src + StorageWidth - 1;\r
       TemString = Value;\r
       for (Index = 0; Index < StorageWidth; Index ++, TemBuffer --) {\r
-        TemString += UnicodeValueToString (TemString, PREFIX_ZERO | RADIX_HEX, *TemBuffer, 2);\r
+        UnicodeValueToStringS (\r
+          TemString,\r
+          MaxLen * sizeof (CHAR16) - ((UINTN)TemString - (UINTN)ConfigResp),\r
+          PREFIX_ZERO | RADIX_HEX,\r
+          *TemBuffer,\r
+          2\r
+          );\r
+        TemString += StrnLenS (TemString, MaxLen - ((UINTN)TemString - (UINTN)ConfigResp) / sizeof (CHAR16));\r
       }\r
     }\r
 \r