public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [PATCH 0/7] Mark [Ascii|Unicode]ValueToString as deprecated
@ 2017-02-21 11:35 Hao Wu
  2017-02-21 11:35 ` [PATCH 1/7] IntelFrameworkModulePkg: Replace [Ascii|Unicode]ValueToString Hao Wu
                   ` (7 more replies)
  0 siblings, 8 replies; 13+ messages in thread
From: Hao Wu @ 2017-02-21 11:35 UTC (permalink / raw)
  To: edk2-devel; +Cc: Hao Wu, Jiewen Yao

This patch series cleans up the usage of the following 2 PrintLib APIs:
UnicodeValueToString & AsciiValueToString

and replaces them with:
UnicodeValueToStringS & AsciiValueToStringS

The series also marks [Ascii|Unicode]ValueToString with the macro
'DISABLE_NEW_DEPRECATED_INTERFACES', indicating they are deprecated.

Cc: Jiewen Yao <jiewen.yao@intel.com>

Hao Wu (7):
  IntelFrameworkModulePkg: Replace [Ascii|Unicode]ValueToString
  MdeModulePkg: Replace [Ascii|Unicode]ValueToString
  Nt32Pkg: Replace [Ascii|Unicode]ValueToString
  SignedCapsulePkg: Replace [Ascii|Unicode]ValueToString
  MdeModulePkg/PrintDxe: Handle the deprecation of [A|U]ValueToString
  MdeModulePkg/PrintLib: Add deprecated flag for APIs [A|U]ValueToString
  MdePkg/BasePrintLib: Add deprecated flag for APIs [A|U]ValueToString

 IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/UpdatePage.c       | 12 ++-
 IntelFrameworkModulePkg/Universal/BdsDxe/DeviceMngr/DeviceManager.c   | 20 ++++-
 IntelFrameworkModulePkg/Universal/BdsDxe/FrontPage.c                  | 15 +++-
 IntelFrameworkModulePkg/Universal/BdsDxe/MemoryTest.c                 |  6 +-
 MdeModulePkg/Application/UiApp/FrontPage.c                            | 15 +++-
 MdeModulePkg/Library/BootMaintenanceManagerUiLib/UpdatePage.c         | 12 ++-
 MdeModulePkg/Library/DeviceManagerUiLib/DeviceManager.c               | 20 ++++-
 MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleReportLib.c           | 10 ++-
 MdeModulePkg/Library/DxeNetLib/DxeNetLib.c                            | 24 ++++-
 MdeModulePkg/Library/DxePrintLibPrint2Protocol/PrintLib.c             | 12 +++
 MdeModulePkg/Library/UefiHiiLib/HiiLib.c                              | 29 +++++-
 MdeModulePkg/Universal/CapsulePei/UefiCapsule.c                       | 18 +++-
 MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleService.c             | 10 ++-
 MdeModulePkg/Universal/DriverSampleDxe/DriverSample.c                 | 37 +++++---
 MdeModulePkg/Universal/HiiDatabaseDxe/ConfigKeywordHandler.c          | 29 +++++-
 MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c                 | 47 ++++++++--
 MdeModulePkg/Universal/Network/VlanConfigDxe/VlanConfigImpl.c         | 14 ++-
 MdeModulePkg/Universal/PrintDxe/Print.c                               | 92 +++++++++++++++++++-
 MdeModulePkg/Universal/SetupBrowserDxe/Expression.c                   | 11 ++-
 MdeModulePkg/Universal/SetupBrowserDxe/IfrParse.c                     |  4 +-
 MdeModulePkg/Universal/SetupBrowserDxe/Setup.c                        | 38 ++++++--
 MdePkg/Include/Library/PrintLib.h                                     | 12 +++
 MdePkg/Library/BasePrintLib/PrintLib.c                                | 12 +++
 Nt32Pkg/Library/PlatformBootManagerLib/MemoryTest.c                   |  6 +-
 SignedCapsulePkg/Universal/RecoveryModuleLoadPei/ParseConfigProfile.c | 10 ++-
 SignedCapsulePkg/Universal/SystemFirmwareUpdate/ParseConfigProfile.c  | 10 ++-
 26 files changed, 443 insertions(+), 82 deletions(-)

-- 
1.9.5.msysgit.0



^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 1/7] IntelFrameworkModulePkg: Replace [Ascii|Unicode]ValueToString
  2017-02-21 11:35 [PATCH 0/7] Mark [Ascii|Unicode]ValueToString as deprecated Hao Wu
@ 2017-02-21 11:35 ` Hao Wu
  2017-02-27  7:36   ` Fan, Jeff
  2017-02-21 11:35 ` [PATCH 2/7] MdeModulePkg: " Hao Wu
                   ` (6 subsequent siblings)
  7 siblings, 1 reply; 13+ messages in thread
From: Hao Wu @ 2017-02-21 11:35 UTC (permalink / raw)
  To: edk2-devel; +Cc: Hao Wu, Jiewen Yao, Jeff Fan

It is the follow up of commits 51f0ceb..9e32e97 to replace
AsciiValueToString/UnicodeValueToString with
AsciiValueToStringS/UnicodeValueToStringS.

Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Jeff Fan <jeff.fan@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
---
 IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/UpdatePage.c     | 12 +++++++++---
 IntelFrameworkModulePkg/Universal/BdsDxe/DeviceMngr/DeviceManager.c | 20 +++++++++++++++++---
 IntelFrameworkModulePkg/Universal/BdsDxe/FrontPage.c                | 15 +++++++++++----
 IntelFrameworkModulePkg/Universal/BdsDxe/MemoryTest.c               |  6 +++---
 4 files changed, 40 insertions(+), 13 deletions(-)

diff --git a/IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/UpdatePage.c b/IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/UpdatePage.c
index a2e38d2..bdf2614 100644
--- a/IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/UpdatePage.c
+++ b/IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/UpdatePage.c
@@ -1,7 +1,7 @@
 /** @file
 Dynamically update the pages.
 
-Copyright (c) 2004 - 2016, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2004 - 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
@@ -844,11 +844,17 @@ UpdateConModePage (
     //
     // Build mode string Column x Row
     //
-    UnicodeValueToString (ModeString, 0, Col, 0);
+    UnicodeValueToStringS (ModeString, sizeof (ModeString), 0, Col, 0);
     PStr = &ModeString[0];
     StrCatS (PStr, ARRAY_SIZE (ModeString), L" x ");
     PStr = PStr + StrLen (PStr);
-    UnicodeValueToString (PStr , 0, Row, 0);
+    UnicodeValueToStringS (
+      PStr,
+      sizeof (ModeString) - ((UINTN)PStr - (UINTN)&ModeString[0]),
+      0,
+      Row,
+      0
+      );
 
     ModeToken[Index] = HiiSetString (CallbackData->BmmHiiHandle, 0, ModeString, NULL);
 
diff --git a/IntelFrameworkModulePkg/Universal/BdsDxe/DeviceMngr/DeviceManager.c b/IntelFrameworkModulePkg/Universal/BdsDxe/DeviceMngr/DeviceManager.c
index af2b18a..125c49d 100644
--- a/IntelFrameworkModulePkg/Universal/BdsDxe/DeviceMngr/DeviceManager.c
+++ b/IntelFrameworkModulePkg/Universal/BdsDxe/DeviceMngr/DeviceManager.c
@@ -1,7 +1,7 @@
 /** @file
   The platform device manager reference implementation
 
-Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2004 - 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
@@ -388,7 +388,14 @@ GetMacAddressString(
   //
   HwAddress = &MacAddressNode->MacAddress.Addr[0];
   for (Index = 0; Index < HwAddressSize; Index++) {
-    String += UnicodeValueToString (String, PREFIX_ZERO | RADIX_HEX, *(HwAddress++), 2);
+    UnicodeValueToStringS (
+      String,
+      BufferLen - ((UINTN)String - (UINTN)*PBuffer),
+      PREFIX_ZERO | RADIX_HEX,
+      *(HwAddress++),
+      2
+      );
+    String += StrnLenS (String, (BufferLen - ((UINTN)String - (UINTN)*PBuffer)) / sizeof (CHAR16));
     if (Index < HwAddressSize - 1) {
       *String++ = L':';
     }
@@ -408,7 +415,14 @@ GetMacAddressString(
 
   if (VlanId != 0) {
     *String++ = L'\\';
-    String += UnicodeValueToString (String, PREFIX_ZERO | RADIX_HEX, VlanId, 4);
+    UnicodeValueToStringS (
+      String,
+      BufferLen - ((UINTN)String - (UINTN)*PBuffer),
+      PREFIX_ZERO | RADIX_HEX,
+      VlanId,
+      4
+      );
+    String += StrnLenS (String, (BufferLen - ((UINTN)String - (UINTN)*PBuffer)) / sizeof (CHAR16));
   }
 
   //
diff --git a/IntelFrameworkModulePkg/Universal/BdsDxe/FrontPage.c b/IntelFrameworkModulePkg/Universal/BdsDxe/FrontPage.c
index c771974..ec91422 100644
--- a/IntelFrameworkModulePkg/Universal/BdsDxe/FrontPage.c
+++ b/IntelFrameworkModulePkg/Universal/BdsDxe/FrontPage.c
@@ -1,7 +1,7 @@
 /** @file
   FrontPage routines to handle the callbacks and browser calls
 
-Copyright (c) 2004 - 2016, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2004 - 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
@@ -629,9 +629,16 @@ ConvertProcessorToString (
 
   StringBuffer = AllocateZeroPool (0x20);
   ASSERT (StringBuffer != NULL);
-  Index = UnicodeValueToString (StringBuffer, LEFT_JUSTIFY, FreqMhz / 1000, 3);
+  UnicodeValueToStringS (StringBuffer, 0x20, LEFT_JUSTIFY, FreqMhz / 1000, 3);
+  Index = StrnLenS (StringBuffer, 0x20 / sizeof (CHAR16));
   StrCatS (StringBuffer, 0x20 / sizeof (CHAR16), L".");
-  UnicodeValueToString (StringBuffer + Index + 1, PREFIX_ZERO, (FreqMhz % 1000) / 10, 2);
+  UnicodeValueToStringS (
+    StringBuffer + Index + 1,
+    0x20 - sizeof (CHAR16) * (Index + 1),
+    PREFIX_ZERO,
+    (FreqMhz % 1000) / 10,
+    2
+    );
   StrCatS (StringBuffer, 0x20 / sizeof (CHAR16), L" GHz");
   *String = (CHAR16 *) StringBuffer;
   return ;
@@ -655,7 +662,7 @@ ConvertMemorySizeToString (
 
   StringBuffer = AllocateZeroPool (0x20);
   ASSERT (StringBuffer != NULL);
-  UnicodeValueToString (StringBuffer, LEFT_JUSTIFY, MemorySize, 6);
+  UnicodeValueToStringS (StringBuffer, 0x20, LEFT_JUSTIFY, MemorySize, 6);
   StrCatS (StringBuffer, 0x20 / sizeof (CHAR16), L" MB RAM");
 
   *String = (CHAR16 *) StringBuffer;
diff --git a/IntelFrameworkModulePkg/Universal/BdsDxe/MemoryTest.c b/IntelFrameworkModulePkg/Universal/BdsDxe/MemoryTest.c
index 700e3e6..1188082 100644
--- a/IntelFrameworkModulePkg/Universal/BdsDxe/MemoryTest.c
+++ b/IntelFrameworkModulePkg/Universal/BdsDxe/MemoryTest.c
@@ -1,7 +1,7 @@
 /** @file
   Perform the platform memory test
 
-Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2004 - 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
@@ -318,7 +318,7 @@ BdsMemoryTest (
                               TempData
                               );
       if (TestPercent != PreviousValue) {
-        UnicodeValueToString (StrPercent, 0, TestPercent, 0);
+        UnicodeValueToStringS (StrPercent, sizeof (StrPercent), 0, TestPercent, 0);
         TmpStr = GetStringById (STRING_TOKEN (STR_MEMORY_TEST_PERCENT));
         if (TmpStr != NULL) {
           //
@@ -386,7 +386,7 @@ BdsMemoryTest (
 
 Done:
   if (!FeaturePcdGet(PcdBootlogoOnlyEnable)) {
-    UnicodeValueToString (StrTotalMemory, COMMA_TYPE, TotalMemorySize, 0);
+    UnicodeValueToStringS (StrTotalMemory, StrTotalMemorySize, COMMA_TYPE, TotalMemorySize, 0);
     if (StrTotalMemory[0] == L',') {
       StrTotalMemory++;
       StrTotalMemorySize -= sizeof (CHAR16);
-- 
1.9.5.msysgit.0



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 2/7] MdeModulePkg: Replace [Ascii|Unicode]ValueToString
  2017-02-21 11:35 [PATCH 0/7] Mark [Ascii|Unicode]ValueToString as deprecated Hao Wu
  2017-02-21 11:35 ` [PATCH 1/7] IntelFrameworkModulePkg: Replace [Ascii|Unicode]ValueToString Hao Wu
@ 2017-02-21 11:35 ` Hao Wu
  2017-02-28  8:13   ` Zeng, Star
  2017-02-21 11:35 ` [PATCH 3/7] Nt32Pkg: " Hao Wu
                   ` (5 subsequent siblings)
  7 siblings, 1 reply; 13+ messages in thread
From: Hao Wu @ 2017-02-21 11:35 UTC (permalink / raw)
  To: edk2-devel; +Cc: Hao Wu, Jiewen Yao, Feng Tian, Star Zeng

It is the follow up of commits 51f0ceb..9e32e97 to replace
AsciiValueToString/UnicodeValueToString with
AsciiValueToStringS/UnicodeValueToStringS.

Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Feng Tian <feng.tian@intel.com>
Cc: Star Zeng <star.zeng@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
---
 MdeModulePkg/Application/UiApp/FrontPage.c                    | 15 +++++--
 MdeModulePkg/Library/BootMaintenanceManagerUiLib/UpdatePage.c | 12 +++--
 MdeModulePkg/Library/DeviceManagerUiLib/DeviceManager.c       | 20 +++++++--
 MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleReportLib.c   | 10 ++++-
 MdeModulePkg/Library/DxeNetLib/DxeNetLib.c                    | 24 ++++++++--
 MdeModulePkg/Library/UefiHiiLib/HiiLib.c                      | 29 ++++++++++--
 MdeModulePkg/Universal/CapsulePei/UefiCapsule.c               | 18 ++++++--
 MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleService.c     | 10 ++++-
 MdeModulePkg/Universal/DriverSampleDxe/DriverSample.c         | 37 +++++++++------
 MdeModulePkg/Universal/HiiDatabaseDxe/ConfigKeywordHandler.c  | 29 ++++++++++--
 MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c         | 47 +++++++++++++++++---
 MdeModulePkg/Universal/Network/VlanConfigDxe/VlanConfigImpl.c | 14 ++++--
 MdeModulePkg/Universal/SetupBrowserDxe/Expression.c           | 11 ++++-
 MdeModulePkg/Universal/SetupBrowserDxe/IfrParse.c             |  4 +-
 MdeModulePkg/Universal/SetupBrowserDxe/Setup.c                | 38 +++++++++++++---
 15 files changed, 258 insertions(+), 60 deletions(-)

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



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 3/7] Nt32Pkg: Replace [Ascii|Unicode]ValueToString
  2017-02-21 11:35 [PATCH 0/7] Mark [Ascii|Unicode]ValueToString as deprecated Hao Wu
  2017-02-21 11:35 ` [PATCH 1/7] IntelFrameworkModulePkg: Replace [Ascii|Unicode]ValueToString Hao Wu
  2017-02-21 11:35 ` [PATCH 2/7] MdeModulePkg: " Hao Wu
@ 2017-02-21 11:35 ` Hao Wu
  2017-02-22  1:57   ` Ni, Ruiyu
  2017-02-21 11:35 ` [PATCH 4/7] SignedCapsulePkg: " Hao Wu
                   ` (4 subsequent siblings)
  7 siblings, 1 reply; 13+ messages in thread
From: Hao Wu @ 2017-02-21 11:35 UTC (permalink / raw)
  To: edk2-devel; +Cc: Hao Wu, Jiewen Yao, Ruiyu Ni

It is the follow up of commits 51f0ceb..9e32e97 to replace
AsciiValueToString/UnicodeValueToString with
AsciiValueToStringS/UnicodeValueToStringS.

Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Ruiyu Ni <ruiyu.ni@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
---
 Nt32Pkg/Library/PlatformBootManagerLib/MemoryTest.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/Nt32Pkg/Library/PlatformBootManagerLib/MemoryTest.c b/Nt32Pkg/Library/PlatformBootManagerLib/MemoryTest.c
index 93ecc7d..53e9ff4 100644
--- a/Nt32Pkg/Library/PlatformBootManagerLib/MemoryTest.c
+++ b/Nt32Pkg/Library/PlatformBootManagerLib/MemoryTest.c
@@ -1,7 +1,7 @@
 /** @file
   Perform the platform memory test
 
-Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2004 - 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
@@ -155,7 +155,7 @@ PlatformBootManagerMemoryTest (
                               TempData
                               );
       if (TestPercent != PreviousValue) {
-        UnicodeValueToString (StrPercent, 0, TestPercent, 0);
+        UnicodeValueToStringS (StrPercent, sizeof (StrPercent), 0, TestPercent, 0);
         TmpStr = HiiGetString (gStringPackHandle, STRING_TOKEN (STR_MEMORY_TEST_PERCENT), NULL);
         if (TmpStr != NULL) {
           //
@@ -223,7 +223,7 @@ PlatformBootManagerMemoryTest (
 
 Done:
   if (!FeaturePcdGet(PcdBootlogoOnlyEnable)) {
-    UnicodeValueToString (StrTotalMemory, COMMA_TYPE, TotalMemorySize, 0);
+    UnicodeValueToStringS (StrTotalMemory, StrTotalMemorySize, COMMA_TYPE, TotalMemorySize, 0);
     if (StrTotalMemory[0] == L',') {
       StrTotalMemory++;
       StrTotalMemorySize -= sizeof (CHAR16);
-- 
1.9.5.msysgit.0



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 4/7] SignedCapsulePkg: Replace [Ascii|Unicode]ValueToString
  2017-02-21 11:35 [PATCH 0/7] Mark [Ascii|Unicode]ValueToString as deprecated Hao Wu
                   ` (2 preceding siblings ...)
  2017-02-21 11:35 ` [PATCH 3/7] Nt32Pkg: " Hao Wu
@ 2017-02-21 11:35 ` Hao Wu
  2017-02-27  1:09   ` Yao, Jiewen
  2017-02-21 11:35 ` [PATCH 5/7] MdeModulePkg/PrintDxe: Handle the deprecation of [A|U]ValueToString Hao Wu
                   ` (3 subsequent siblings)
  7 siblings, 1 reply; 13+ messages in thread
From: Hao Wu @ 2017-02-21 11:35 UTC (permalink / raw)
  To: edk2-devel; +Cc: Hao Wu, Jiewen Yao

It is the follow up of commits 51f0ceb..9e32e97 to replace
AsciiValueToString/UnicodeValueToString with
AsciiValueToStringS/UnicodeValueToStringS.

Cc: Jiewen Yao <jiewen.yao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
---
 SignedCapsulePkg/Universal/RecoveryModuleLoadPei/ParseConfigProfile.c | 10 ++++++++--
 SignedCapsulePkg/Universal/SystemFirmwareUpdate/ParseConfigProfile.c  | 10 ++++++++--
 2 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/SignedCapsulePkg/Universal/RecoveryModuleLoadPei/ParseConfigProfile.c b/SignedCapsulePkg/Universal/RecoveryModuleLoadPei/ParseConfigProfile.c
index fef1daf..204fd53 100644
--- a/SignedCapsulePkg/Universal/RecoveryModuleLoadPei/ParseConfigProfile.c
+++ b/SignedCapsulePkg/Universal/RecoveryModuleLoadPei/ParseConfigProfile.c
@@ -2,7 +2,7 @@
   Parse the INI configuration file and pass the information to the recovery driver
   so that the driver can perform recovery accordingly.
 
-  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
@@ -85,7 +85,13 @@ ParseRecoveryDataFile (
     // Get the section name of each update
     //
     AsciiStrCpyS (Entry, MAX_LINE_LENGTH, "Recovery");
-    AsciiValueToString(Entry + AsciiStrLen(Entry), 0, Index, 0);
+    AsciiValueToStringS (
+      Entry + AsciiStrnLenS (Entry, MAX_LINE_LENGTH),
+      MAX_LINE_LENGTH - AsciiStrnLenS (Entry, MAX_LINE_LENGTH),
+      0,
+      Index,
+      0
+      );
     Status = GetStringFromDataFile(
                Context,
                "Head",
diff --git a/SignedCapsulePkg/Universal/SystemFirmwareUpdate/ParseConfigProfile.c b/SignedCapsulePkg/Universal/SystemFirmwareUpdate/ParseConfigProfile.c
index dcad762..67584c6 100644
--- a/SignedCapsulePkg/Universal/SystemFirmwareUpdate/ParseConfigProfile.c
+++ b/SignedCapsulePkg/Universal/SystemFirmwareUpdate/ParseConfigProfile.c
@@ -2,7 +2,7 @@
   Parse the INI configuration file and pass the information to the update driver
   so that the driver can perform update accordingly.
 
-  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
@@ -86,7 +86,13 @@ ParseUpdateDataFile (
     // Get the section name of each update
     //
     AsciiStrCpyS (Entry, MAX_LINE_LENGTH, "Update");
-    AsciiValueToString(Entry + AsciiStrLen(Entry), 0, Index, 0);
+    AsciiValueToStringS (
+      Entry + AsciiStrnLenS (Entry, MAX_LINE_LENGTH),
+      MAX_LINE_LENGTH - AsciiStrnLenS (Entry, MAX_LINE_LENGTH),
+      0,
+      Index,
+      0
+      );
     Status = GetStringFromDataFile(
                Context,
                "Head",
-- 
1.9.5.msysgit.0



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 5/7] MdeModulePkg/PrintDxe: Handle the deprecation of [A|U]ValueToString
  2017-02-21 11:35 [PATCH 0/7] Mark [Ascii|Unicode]ValueToString as deprecated Hao Wu
                   ` (3 preceding siblings ...)
  2017-02-21 11:35 ` [PATCH 4/7] SignedCapsulePkg: " Hao Wu
@ 2017-02-21 11:35 ` Hao Wu
  2017-02-21 11:35 ` [PATCH 6/7] MdeModulePkg/PrintLib: Add deprecated flag for APIs [A|U]ValueToString Hao Wu
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 13+ messages in thread
From: Hao Wu @ 2017-02-21 11:35 UTC (permalink / raw)
  To: edk2-devel; +Cc: Hao Wu, Jiewen Yao, Liming Gao, Michael Kinney

To handle the deprecation of PrintLib APIs UnicodeValueToString and
AsciiValueToString by subsequent commits, the commit refines the logic for
the implemetation of the UnicodeValueToString and AsciiValueToString
services in EFI_PRINT2_PROTOCOL.

When the macro DISABLE_NEW_DEPRECATED_INTERFACES is defined (indicating
the deprecation of the PrintLib APIs), the above two services will ASSERT
and will return zero to reflect not being supported.

Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Cc: Michael Kinney <michael.d.kinney@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
---
 MdeModulePkg/Universal/PrintDxe/Print.c | 92 +++++++++++++++++++-
 1 file changed, 90 insertions(+), 2 deletions(-)

diff --git a/MdeModulePkg/Universal/PrintDxe/Print.c b/MdeModulePkg/Universal/PrintDxe/Print.c
index 85bc724..8029836 100644
--- a/MdeModulePkg/Universal/PrintDxe/Print.c
+++ b/MdeModulePkg/Universal/PrintDxe/Print.c
@@ -20,6 +20,94 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #include <Library/DebugLib.h>
 #include <Library/UefiDriverEntryPoint.h>
 
+/**
+  Implementaion of the UnicodeValueToString service in EFI_PRINT2_PROTOCOL.
+
+  If the macro DISABLE_NEW_DEPRECATED_INTERFACES is defined, then ASSERT().
+
+  @param  Buffer  The pointer to the output buffer for the produced
+                  Null-terminated Unicode string.
+  @param  Flags   The bitmask of flags that specify left justification, zero
+                  pad, and commas.
+  @param  Value   The 64-bit signed value to convert to a string.
+  @param  Width   The maximum number of Unicode characters to place in Buffer,
+                  not including the Null-terminator.
+
+  @return If the macro DISABLE_NEW_DEPRECATED_INTERFACES is defined, return 0.
+          Otherwise, return the number of Unicode characters in Buffer not
+          including the Null-terminator.
+
+**/
+UINTN
+EFIAPI
+PrintDxeUnicodeValueToString (
+  IN OUT CHAR16  *Buffer,
+  IN UINTN       Flags,
+  IN INT64       Value,
+  IN UINTN       Width
+  )
+{
+#ifdef DISABLE_NEW_DEPRECATED_INTERFACES
+  //
+  // If the macro DISABLE_NEW_DEPRECATED_INTERFACES is defined, then the
+  // PrintLib API UnicodeValueToString is already deprecated.
+  // In this case, ASSERT will be triggered and zero will be returned for the
+  // implementation of the UnicodeValueToString service in EFI_PRINT2_PROTOCOL
+  // to indicate that the service is no longer supported.
+  //
+  DEBUG ((DEBUG_ERROR, "PrintDxe: The UnicodeValueToString service in EFI_PRINT2_PROTOCOL is no longer supported for security reason.\n"));
+  DEBUG ((DEBUG_ERROR, "PrintDxe: Please consider using the UnicodeValueToStringS service in EFI_PRINT2S_PROTOCOL.\n"));
+  ASSERT (FALSE);
+  return 0;
+#else
+  return UnicodeValueToString (Buffer, Flags, Value, Width);
+#endif
+}
+
+/**
+  Implementaion of the AsciiValueToString service in EFI_PRINT2_PROTOCOL.
+
+  If the macro DISABLE_NEW_DEPRECATED_INTERFACES is defined, then ASSERT().
+
+  @param  Buffer  A pointer to the output buffer for the produced
+                  Null-terminated ASCII string.
+  @param  Flags   The bitmask of flags that specify left justification, zero
+                  pad, and commas.
+  @param  Value   The 64-bit signed value to convert to a string.
+  @param  Width   The maximum number of ASCII characters to place in Buffer,
+                  not including the Null-terminator.
+
+  @return If the macro DISABLE_NEW_DEPRECATED_INTERFACES is defined, return 0.
+          Otherwise, return the number of ASCII characters in Buffer not
+          including the Null-terminator.
+
+**/
+UINTN
+EFIAPI
+PrintDxeAsciiValueToString (
+  OUT CHAR8      *Buffer,
+  IN  UINTN      Flags,
+  IN  INT64      Value,
+  IN  UINTN      Width
+  )
+{
+#ifdef DISABLE_NEW_DEPRECATED_INTERFACES
+  //
+  // If the macro DISABLE_NEW_DEPRECATED_INTERFACES is defined, then the
+  // PrintLib API AsciiValueToString is already deprecated.
+  // In this case, ASSERT will be triggered and zero will be returned for the
+  // implementation of the AsciiValueToString service in EFI_PRINT2_PROTOCOL
+  // to indicate that the service is no longer supported.
+  //
+  DEBUG ((DEBUG_ERROR, "PrintDxe: The AsciiValueToString service in EFI_PRINT2_PROTOCOL is no longer supported for security reason.\n"));
+  DEBUG ((DEBUG_ERROR, "PrintDxe: Please consider using the AsciiValueToStringS service in EFI_PRINT2S_PROTOCOL.\n"));
+  ASSERT (FALSE);
+  return 0;
+#else
+  return AsciiValueToString (Buffer, Flags, Value, Width);
+#endif
+}
+
 EFI_HANDLE  mPrintThunkHandle = NULL;
 
 CONST EFI_PRINT2_PROTOCOL mPrint2Protocol = {
@@ -27,12 +115,12 @@ CONST EFI_PRINT2_PROTOCOL mPrint2Protocol = {
   UnicodeSPrint,
   UnicodeBSPrintAsciiFormat,
   UnicodeSPrintAsciiFormat,
-  UnicodeValueToString,
+  PrintDxeUnicodeValueToString,
   AsciiBSPrint,
   AsciiSPrint,
   AsciiBSPrintUnicodeFormat,
   AsciiSPrintUnicodeFormat,
-  AsciiValueToString
+  PrintDxeAsciiValueToString
 };
 
 CONST EFI_PRINT2S_PROTOCOL mPrint2SProtocol = {
-- 
1.9.5.msysgit.0



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 6/7] MdeModulePkg/PrintLib: Add deprecated flag for APIs [A|U]ValueToString
  2017-02-21 11:35 [PATCH 0/7] Mark [Ascii|Unicode]ValueToString as deprecated Hao Wu
                   ` (4 preceding siblings ...)
  2017-02-21 11:35 ` [PATCH 5/7] MdeModulePkg/PrintDxe: Handle the deprecation of [A|U]ValueToString Hao Wu
@ 2017-02-21 11:35 ` Hao Wu
  2017-02-21 11:35 ` [PATCH 7/7] MdePkg/BasePrintLib: " Hao Wu
  2017-02-23  1:50 ` [PATCH 0/7] Mark [Ascii|Unicode]ValueToString as deprecated Gao, Liming
  7 siblings, 0 replies; 13+ messages in thread
From: Hao Wu @ 2017-02-21 11:35 UTC (permalink / raw)
  To: edk2-devel; +Cc: Hao Wu, Jiewen Yao, Liming Gao, Michael Kinney

Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Cc: Michael Kinney <michael.d.kinney@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
---
 MdeModulePkg/Library/DxePrintLibPrint2Protocol/PrintLib.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/MdeModulePkg/Library/DxePrintLibPrint2Protocol/PrintLib.c b/MdeModulePkg/Library/DxePrintLibPrint2Protocol/PrintLib.c
index 589d4db..434736f 100644
--- a/MdeModulePkg/Library/DxePrintLibPrint2Protocol/PrintLib.c
+++ b/MdeModulePkg/Library/DxePrintLibPrint2Protocol/PrintLib.c
@@ -598,7 +598,11 @@ UnicodeSPrintAsciiFormat (
   return NumberOfPrinted;
 }
 
+#ifndef DISABLE_NEW_DEPRECATED_INTERFACES
+
 /**
+  [ATTENTION] This function is deprecated for security reason.
+
   Converts a decimal value to a Null-terminated Unicode string.
   
   Converts the decimal number specified by Value to a Null-terminated Unicode 
@@ -665,6 +669,8 @@ UnicodeValueToString (
   return StrnLenS (Buffer, BufferSize / sizeof (CHAR16));
 }
 
+#endif
+
 /**
   Converts a decimal value to a Null-terminated Unicode string.
 
@@ -1071,7 +1077,11 @@ AsciiSPrintUnicodeFormat (
 }
 
 
+#ifndef DISABLE_NEW_DEPRECATED_INTERFACES
+
 /**
+  [ATTENTION] This function is deprecated for security reason.
+
   Converts a decimal value to a Null-terminated ASCII string.
   
   Converts the decimal number specified by Value to a Null-terminated ASCII string 
@@ -1137,6 +1147,8 @@ AsciiValueToString (
   return AsciiStrnLenS (Buffer, BufferSize / sizeof (CHAR8));
 }
 
+#endif
+
 /**
   Converts a decimal value to a Null-terminated Ascii string.
 
-- 
1.9.5.msysgit.0



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH 7/7] MdePkg/BasePrintLib: Add deprecated flag for APIs [A|U]ValueToString
  2017-02-21 11:35 [PATCH 0/7] Mark [Ascii|Unicode]ValueToString as deprecated Hao Wu
                   ` (5 preceding siblings ...)
  2017-02-21 11:35 ` [PATCH 6/7] MdeModulePkg/PrintLib: Add deprecated flag for APIs [A|U]ValueToString Hao Wu
@ 2017-02-21 11:35 ` Hao Wu
  2017-02-23  1:50 ` [PATCH 0/7] Mark [Ascii|Unicode]ValueToString as deprecated Gao, Liming
  7 siblings, 0 replies; 13+ messages in thread
From: Hao Wu @ 2017-02-21 11:35 UTC (permalink / raw)
  To: edk2-devel; +Cc: Hao Wu, Jiewen Yao, Liming Gao, Michael Kinney

Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Cc: Michael Kinney <michael.d.kinney@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
---
 MdePkg/Include/Library/PrintLib.h      | 12 ++++++++++++
 MdePkg/Library/BasePrintLib/PrintLib.c | 12 ++++++++++++
 2 files changed, 24 insertions(+)

diff --git a/MdePkg/Include/Library/PrintLib.h b/MdePkg/Include/Library/PrintLib.h
index 8c11dab..9fe3609 100644
--- a/MdePkg/Include/Library/PrintLib.h
+++ b/MdePkg/Include/Library/PrintLib.h
@@ -491,7 +491,11 @@ UnicodeSPrintAsciiFormat (
   ...
   );
 
+#ifndef DISABLE_NEW_DEPRECATED_INTERFACES
+
 /**
+  [ATTENTION] This function is deprecated for security reason.
+
   Converts a decimal value to a Null-terminated Unicode string.
   
   Converts the decimal number specified by Value to a Null-terminated Unicode 
@@ -541,6 +545,8 @@ UnicodeValueToString (
   IN UINTN       Width
   );
 
+#endif
+
 /**
   Converts a decimal value to a Null-terminated Unicode string.
 
@@ -882,7 +888,11 @@ AsciiSPrintUnicodeFormat (
   ...
   );
 
+#ifndef DISABLE_NEW_DEPRECATED_INTERFACES
+
 /**
+  [ATTENTION] This function is deprecated for security reason.
+
   Converts a decimal value to a Null-terminated ASCII string.
   
   Converts the decimal number specified by Value to a Null-terminated ASCII string 
@@ -931,6 +941,8 @@ AsciiValueToString (
   IN  UINTN      Width
   );
 
+#endif
+
 /**
   Converts a decimal value to a Null-terminated Ascii string.
 
diff --git a/MdePkg/Library/BasePrintLib/PrintLib.c b/MdePkg/Library/BasePrintLib/PrintLib.c
index 221b52e..7453e95 100644
--- a/MdePkg/Library/BasePrintLib/PrintLib.c
+++ b/MdePkg/Library/BasePrintLib/PrintLib.c
@@ -349,7 +349,11 @@ UnicodeSPrintAsciiFormat (
   return NumberOfPrinted;
 }
 
+#ifndef DISABLE_NEW_DEPRECATED_INTERFACES
+
 /**
+  [ATTENTION] This function is deprecated for security reason.
+
   Converts a decimal value to a Null-terminated Unicode string.
   
   Converts the decimal number specified by Value to a Null-terminated Unicode 
@@ -403,6 +407,8 @@ UnicodeValueToString (
   return BasePrintLibConvertValueToString ((CHAR8 *)Buffer, Flags, Value, Width, 2);
 }
 
+#endif
+
 /**
   Converts a decimal value to a Null-terminated Unicode string.
 
@@ -781,7 +787,11 @@ AsciiSPrintUnicodeFormat (
 }
 
 
+#ifndef DISABLE_NEW_DEPRECATED_INTERFACES
+
 /**
+  [ATTENTION] This function is deprecated for security reason.
+
   Converts a decimal value to a Null-terminated ASCII string.
   
   Converts the decimal number specified by Value to a Null-terminated ASCII string 
@@ -833,6 +843,8 @@ AsciiValueToString (
   return BasePrintLibConvertValueToString (Buffer, Flags, Value, Width, 1);
 }
 
+#endif
+
 /**
   Converts a decimal value to a Null-terminated Ascii string.
 
-- 
1.9.5.msysgit.0



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH 3/7] Nt32Pkg: Replace [Ascii|Unicode]ValueToString
  2017-02-21 11:35 ` [PATCH 3/7] Nt32Pkg: " Hao Wu
@ 2017-02-22  1:57   ` Ni, Ruiyu
  0 siblings, 0 replies; 13+ messages in thread
From: Ni, Ruiyu @ 2017-02-22  1:57 UTC (permalink / raw)
  To: Wu, Hao A, edk2-devel@lists.01.org; +Cc: Wu, Hao A, Yao, Jiewen

Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>

Thanks/Ray

> -----Original Message-----
> From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of Hao
> Wu
> Sent: Tuesday, February 21, 2017 7:36 PM
> To: edk2-devel@lists.01.org
> Cc: Wu, Hao A <hao.a.wu@intel.com>; Ni, Ruiyu <ruiyu.ni@intel.com>; Yao,
> Jiewen <jiewen.yao@intel.com>
> Subject: [edk2] [PATCH 3/7] Nt32Pkg: Replace [Ascii|Unicode]ValueToString
> 
> It is the follow up of commits 51f0ceb..9e32e97 to replace
> AsciiValueToString/UnicodeValueToString with
> AsciiValueToStringS/UnicodeValueToStringS.
> 
> Cc: Jiewen Yao <jiewen.yao@intel.com>
> Cc: Ruiyu Ni <ruiyu.ni@intel.com>
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Hao Wu <hao.a.wu@intel.com>
> ---
>  Nt32Pkg/Library/PlatformBootManagerLib/MemoryTest.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/Nt32Pkg/Library/PlatformBootManagerLib/MemoryTest.c
> b/Nt32Pkg/Library/PlatformBootManagerLib/MemoryTest.c
> index 93ecc7d..53e9ff4 100644
> --- a/Nt32Pkg/Library/PlatformBootManagerLib/MemoryTest.c
> +++ b/Nt32Pkg/Library/PlatformBootManagerLib/MemoryTest.c
> @@ -1,7 +1,7 @@
>  /** @file
>    Perform the platform memory test
> 
> -Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR>
> +Copyright (c) 2004 - 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 @@ -155,7 +155,7 @@
> PlatformBootManagerMemoryTest (
>                                TempData
>                                );
>        if (TestPercent != PreviousValue) {
> -        UnicodeValueToString (StrPercent, 0, TestPercent, 0);
> +        UnicodeValueToStringS (StrPercent, sizeof (StrPercent), 0,
> + TestPercent, 0);
>          TmpStr = HiiGetString (gStringPackHandle, STRING_TOKEN
> (STR_MEMORY_TEST_PERCENT), NULL);
>          if (TmpStr != NULL) {
>            //
> @@ -223,7 +223,7 @@ PlatformBootManagerMemoryTest (
> 
>  Done:
>    if (!FeaturePcdGet(PcdBootlogoOnlyEnable)) {
> -    UnicodeValueToString (StrTotalMemory, COMMA_TYPE, TotalMemorySize,
> 0);
> +    UnicodeValueToStringS (StrTotalMemory, StrTotalMemorySize,
> + COMMA_TYPE, TotalMemorySize, 0);
>      if (StrTotalMemory[0] == L',') {
>        StrTotalMemory++;
>        StrTotalMemorySize -= sizeof (CHAR16);
> --
> 1.9.5.msysgit.0
> 
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 0/7] Mark [Ascii|Unicode]ValueToString as deprecated
  2017-02-21 11:35 [PATCH 0/7] Mark [Ascii|Unicode]ValueToString as deprecated Hao Wu
                   ` (6 preceding siblings ...)
  2017-02-21 11:35 ` [PATCH 7/7] MdePkg/BasePrintLib: " Hao Wu
@ 2017-02-23  1:50 ` Gao, Liming
  7 siblings, 0 replies; 13+ messages in thread
From: Gao, Liming @ 2017-02-23  1:50 UTC (permalink / raw)
  To: Wu, Hao A, edk2-devel@lists.01.org; +Cc: Wu, Hao A, Yao, Jiewen

The change in PrintLib and PrintDxe (Patch 5~7) are good to me. 

Reviewed-by: Liming Gao <liming.gao@intel.com>

Thanks
Liming
-----Original Message-----
From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of Hao Wu
Sent: Tuesday, February 21, 2017 7:35 PM
To: edk2-devel@lists.01.org
Cc: Wu, Hao A <hao.a.wu@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>
Subject: [edk2] [PATCH 0/7] Mark [Ascii|Unicode]ValueToString as deprecated

This patch series cleans up the usage of the following 2 PrintLib APIs:
UnicodeValueToString & AsciiValueToString

and replaces them with:
UnicodeValueToStringS & AsciiValueToStringS

The series also marks [Ascii|Unicode]ValueToString with the macro
'DISABLE_NEW_DEPRECATED_INTERFACES', indicating they are deprecated.

Cc: Jiewen Yao <jiewen.yao@intel.com>

Hao Wu (7):
  IntelFrameworkModulePkg: Replace [Ascii|Unicode]ValueToString
  MdeModulePkg: Replace [Ascii|Unicode]ValueToString
  Nt32Pkg: Replace [Ascii|Unicode]ValueToString
  SignedCapsulePkg: Replace [Ascii|Unicode]ValueToString
  MdeModulePkg/PrintDxe: Handle the deprecation of [A|U]ValueToString
  MdeModulePkg/PrintLib: Add deprecated flag for APIs [A|U]ValueToString
  MdePkg/BasePrintLib: Add deprecated flag for APIs [A|U]ValueToString

 IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/UpdatePage.c       | 12 ++-
 IntelFrameworkModulePkg/Universal/BdsDxe/DeviceMngr/DeviceManager.c   | 20 ++++-
 IntelFrameworkModulePkg/Universal/BdsDxe/FrontPage.c                  | 15 +++-
 IntelFrameworkModulePkg/Universal/BdsDxe/MemoryTest.c                 |  6 +-
 MdeModulePkg/Application/UiApp/FrontPage.c                            | 15 +++-
 MdeModulePkg/Library/BootMaintenanceManagerUiLib/UpdatePage.c         | 12 ++-
 MdeModulePkg/Library/DeviceManagerUiLib/DeviceManager.c               | 20 ++++-
 MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleReportLib.c           | 10 ++-
 MdeModulePkg/Library/DxeNetLib/DxeNetLib.c                            | 24 ++++-
 MdeModulePkg/Library/DxePrintLibPrint2Protocol/PrintLib.c             | 12 +++
 MdeModulePkg/Library/UefiHiiLib/HiiLib.c                              | 29 +++++-
 MdeModulePkg/Universal/CapsulePei/UefiCapsule.c                       | 18 +++-
 MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleService.c             | 10 ++-
 MdeModulePkg/Universal/DriverSampleDxe/DriverSample.c                 | 37 +++++---
 MdeModulePkg/Universal/HiiDatabaseDxe/ConfigKeywordHandler.c          | 29 +++++-
 MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c                 | 47 ++++++++--
 MdeModulePkg/Universal/Network/VlanConfigDxe/VlanConfigImpl.c         | 14 ++-
 MdeModulePkg/Universal/PrintDxe/Print.c                               | 92 +++++++++++++++++++-
 MdeModulePkg/Universal/SetupBrowserDxe/Expression.c                   | 11 ++-
 MdeModulePkg/Universal/SetupBrowserDxe/IfrParse.c                     |  4 +-
 MdeModulePkg/Universal/SetupBrowserDxe/Setup.c                        | 38 ++++++--
 MdePkg/Include/Library/PrintLib.h                                     | 12 +++
 MdePkg/Library/BasePrintLib/PrintLib.c                                | 12 +++
 Nt32Pkg/Library/PlatformBootManagerLib/MemoryTest.c                   |  6 +-
 SignedCapsulePkg/Universal/RecoveryModuleLoadPei/ParseConfigProfile.c | 10 ++-
 SignedCapsulePkg/Universal/SystemFirmwareUpdate/ParseConfigProfile.c  | 10 ++-
 26 files changed, 443 insertions(+), 82 deletions(-)

-- 
1.9.5.msysgit.0

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


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 4/7] SignedCapsulePkg: Replace [Ascii|Unicode]ValueToString
  2017-02-21 11:35 ` [PATCH 4/7] SignedCapsulePkg: " Hao Wu
@ 2017-02-27  1:09   ` Yao, Jiewen
  0 siblings, 0 replies; 13+ messages in thread
From: Yao, Jiewen @ 2017-02-27  1:09 UTC (permalink / raw)
  To: Wu, Hao A, edk2-devel@lists.01.org

Reviewed-by: Jiewen.yao@intel.com

> -----Original Message-----
> From: Wu, Hao A
> Sent: Tuesday, February 21, 2017 7:36 PM
> To: edk2-devel@lists.01.org
> Cc: Wu, Hao A <hao.a.wu@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>
> Subject: [PATCH 4/7] SignedCapsulePkg: Replace [Ascii|Unicode]ValueToString
> 
> It is the follow up of commits 51f0ceb..9e32e97 to replace
> AsciiValueToString/UnicodeValueToString with
> AsciiValueToStringS/UnicodeValueToStringS.
> 
> Cc: Jiewen Yao <jiewen.yao@intel.com>
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Hao Wu <hao.a.wu@intel.com>
> ---
>  SignedCapsulePkg/Universal/RecoveryModuleLoadPei/ParseConfigProfile.c |
> 10 ++++++++--
>  SignedCapsulePkg/Universal/SystemFirmwareUpdate/ParseConfigProfile.c  |
> 10 ++++++++--
>  2 files changed, 16 insertions(+), 4 deletions(-)
> 
> diff --git
> a/SignedCapsulePkg/Universal/RecoveryModuleLoadPei/ParseConfigProfile.c
> b/SignedCapsulePkg/Universal/RecoveryModuleLoadPei/ParseConfigProfile.c
> index fef1daf..204fd53 100644
> --- a/SignedCapsulePkg/Universal/RecoveryModuleLoadPei/ParseConfigProfile.c
> +++
> b/SignedCapsulePkg/Universal/RecoveryModuleLoadPei/ParseConfigProfile.c
> @@ -2,7 +2,7 @@
>    Parse the INI configuration file and pass the information to the recovery
> driver
>    so that the driver can perform recovery accordingly.
> 
> -  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
> @@ -85,7 +85,13 @@ ParseRecoveryDataFile (
>      // Get the section name of each update
>      //
>      AsciiStrCpyS (Entry, MAX_LINE_LENGTH, "Recovery");
> -    AsciiValueToString(Entry + AsciiStrLen(Entry), 0, Index, 0);
> +    AsciiValueToStringS (
> +      Entry + AsciiStrnLenS (Entry, MAX_LINE_LENGTH),
> +      MAX_LINE_LENGTH - AsciiStrnLenS (Entry, MAX_LINE_LENGTH),
> +      0,
> +      Index,
> +      0
> +      );
>      Status = GetStringFromDataFile(
>                 Context,
>                 "Head",
> diff --git
> a/SignedCapsulePkg/Universal/SystemFirmwareUpdate/ParseConfigProfile.c
> b/SignedCapsulePkg/Universal/SystemFirmwareUpdate/ParseConfigProfile.c
> index dcad762..67584c6 100644
> --- a/SignedCapsulePkg/Universal/SystemFirmwareUpdate/ParseConfigProfile.c
> +++
> b/SignedCapsulePkg/Universal/SystemFirmwareUpdate/ParseConfigProfile.c
> @@ -2,7 +2,7 @@
>    Parse the INI configuration file and pass the information to the update driver
>    so that the driver can perform update accordingly.
> 
> -  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
> @@ -86,7 +86,13 @@ ParseUpdateDataFile (
>      // Get the section name of each update
>      //
>      AsciiStrCpyS (Entry, MAX_LINE_LENGTH, "Update");
> -    AsciiValueToString(Entry + AsciiStrLen(Entry), 0, Index, 0);
> +    AsciiValueToStringS (
> +      Entry + AsciiStrnLenS (Entry, MAX_LINE_LENGTH),
> +      MAX_LINE_LENGTH - AsciiStrnLenS (Entry, MAX_LINE_LENGTH),
> +      0,
> +      Index,
> +      0
> +      );
>      Status = GetStringFromDataFile(
>                 Context,
>                 "Head",
> --
> 1.9.5.msysgit.0



^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH 1/7] IntelFrameworkModulePkg: Replace [Ascii|Unicode]ValueToString
  2017-02-21 11:35 ` [PATCH 1/7] IntelFrameworkModulePkg: Replace [Ascii|Unicode]ValueToString Hao Wu
@ 2017-02-27  7:36   ` Fan, Jeff
  0 siblings, 0 replies; 13+ messages in thread
From: Fan, Jeff @ 2017-02-27  7:36 UTC (permalink / raw)
  To: Wu, Hao A, edk2-devel@lists.01.org; +Cc: Yao, Jiewen

Reviewed-by: Jeff Fan <jeff.fan@intel.com>

-----Original Message-----
From: Wu, Hao A 
Sent: Tuesday, February 21, 2017 7:35 PM
To: edk2-devel@lists.01.org
Cc: Wu, Hao A; Yao, Jiewen; Fan, Jeff
Subject: [PATCH 1/7] IntelFrameworkModulePkg: Replace [Ascii|Unicode]ValueToString

It is the follow up of commits 51f0ceb..9e32e97 to replace AsciiValueToString/UnicodeValueToString with AsciiValueToStringS/UnicodeValueToStringS.

Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Jeff Fan <jeff.fan@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
---
 IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/UpdatePage.c     | 12 +++++++++---
 IntelFrameworkModulePkg/Universal/BdsDxe/DeviceMngr/DeviceManager.c | 20 +++++++++++++++++---
 IntelFrameworkModulePkg/Universal/BdsDxe/FrontPage.c                | 15 +++++++++++----
 IntelFrameworkModulePkg/Universal/BdsDxe/MemoryTest.c               |  6 +++---
 4 files changed, 40 insertions(+), 13 deletions(-)

diff --git a/IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/UpdatePage.c b/IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/UpdatePage.c
index a2e38d2..bdf2614 100644
--- a/IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/UpdatePage.c
+++ b/IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/UpdatePage.c
@@ -1,7 +1,7 @@
 /** @file
 Dynamically update the pages.
 
-Copyright (c) 2004 - 2016, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2004 - 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 @@ -844,11 +844,17 @@ UpdateConModePage (
     //
     // Build mode string Column x Row
     //
-    UnicodeValueToString (ModeString, 0, Col, 0);
+    UnicodeValueToStringS (ModeString, sizeof (ModeString), 0, Col, 0);
     PStr = &ModeString[0];
     StrCatS (PStr, ARRAY_SIZE (ModeString), L" x ");
     PStr = PStr + StrLen (PStr);
-    UnicodeValueToString (PStr , 0, Row, 0);
+    UnicodeValueToStringS (
+      PStr,
+      sizeof (ModeString) - ((UINTN)PStr - (UINTN)&ModeString[0]),
+      0,
+      Row,
+      0
+      );
 
     ModeToken[Index] = HiiSetString (CallbackData->BmmHiiHandle, 0, ModeString, NULL);
 
diff --git a/IntelFrameworkModulePkg/Universal/BdsDxe/DeviceMngr/DeviceManager.c b/IntelFrameworkModulePkg/Universal/BdsDxe/DeviceMngr/DeviceManager.c
index af2b18a..125c49d 100644
--- a/IntelFrameworkModulePkg/Universal/BdsDxe/DeviceMngr/DeviceManager.c
+++ b/IntelFrameworkModulePkg/Universal/BdsDxe/DeviceMngr/DeviceManager.
+++ c
@@ -1,7 +1,7 @@
 /** @file
   The platform device manager reference implementation
 
-Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2004 - 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 @@ -388,7 +388,14 @@ GetMacAddressString(
   //
   HwAddress = &MacAddressNode->MacAddress.Addr[0];
   for (Index = 0; Index < HwAddressSize; Index++) {
-    String += UnicodeValueToString (String, PREFIX_ZERO | RADIX_HEX, *(HwAddress++), 2);
+    UnicodeValueToStringS (
+      String,
+      BufferLen - ((UINTN)String - (UINTN)*PBuffer),
+      PREFIX_ZERO | RADIX_HEX,
+      *(HwAddress++),
+      2
+      );
+    String += StrnLenS (String, (BufferLen - ((UINTN)String - 
+ (UINTN)*PBuffer)) / sizeof (CHAR16));
     if (Index < HwAddressSize - 1) {
       *String++ = L':';
     }
@@ -408,7 +415,14 @@ GetMacAddressString(
 
   if (VlanId != 0) {
     *String++ = L'\\';
-    String += UnicodeValueToString (String, PREFIX_ZERO | RADIX_HEX, VlanId, 4);
+    UnicodeValueToStringS (
+      String,
+      BufferLen - ((UINTN)String - (UINTN)*PBuffer),
+      PREFIX_ZERO | RADIX_HEX,
+      VlanId,
+      4
+      );
+    String += StrnLenS (String, (BufferLen - ((UINTN)String - 
+ (UINTN)*PBuffer)) / sizeof (CHAR16));
   }
 
   //
diff --git a/IntelFrameworkModulePkg/Universal/BdsDxe/FrontPage.c b/IntelFrameworkModulePkg/Universal/BdsDxe/FrontPage.c
index c771974..ec91422 100644
--- a/IntelFrameworkModulePkg/Universal/BdsDxe/FrontPage.c
+++ b/IntelFrameworkModulePkg/Universal/BdsDxe/FrontPage.c
@@ -1,7 +1,7 @@
 /** @file
   FrontPage routines to handle the callbacks and browser calls
 
-Copyright (c) 2004 - 2016, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2004 - 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 @@ -629,9 +629,16 @@ ConvertProcessorToString (
 
   StringBuffer = AllocateZeroPool (0x20);
   ASSERT (StringBuffer != NULL);
-  Index = UnicodeValueToString (StringBuffer, LEFT_JUSTIFY, FreqMhz / 1000, 3);
+  UnicodeValueToStringS (StringBuffer, 0x20, LEFT_JUSTIFY, FreqMhz / 
+ 1000, 3);  Index = StrnLenS (StringBuffer, 0x20 / sizeof (CHAR16));
   StrCatS (StringBuffer, 0x20 / sizeof (CHAR16), L".");
-  UnicodeValueToString (StringBuffer + Index + 1, PREFIX_ZERO, (FreqMhz % 1000) / 10, 2);
+  UnicodeValueToStringS (
+    StringBuffer + Index + 1,
+    0x20 - sizeof (CHAR16) * (Index + 1),
+    PREFIX_ZERO,
+    (FreqMhz % 1000) / 10,
+    2
+    );
   StrCatS (StringBuffer, 0x20 / sizeof (CHAR16), L" GHz");
   *String = (CHAR16 *) StringBuffer;
   return ;
@@ -655,7 +662,7 @@ ConvertMemorySizeToString (
 
   StringBuffer = AllocateZeroPool (0x20);
   ASSERT (StringBuffer != NULL);
-  UnicodeValueToString (StringBuffer, LEFT_JUSTIFY, MemorySize, 6);
+  UnicodeValueToStringS (StringBuffer, 0x20, LEFT_JUSTIFY, MemorySize, 
+ 6);
   StrCatS (StringBuffer, 0x20 / sizeof (CHAR16), L" MB RAM");
 
   *String = (CHAR16 *) StringBuffer;
diff --git a/IntelFrameworkModulePkg/Universal/BdsDxe/MemoryTest.c b/IntelFrameworkModulePkg/Universal/BdsDxe/MemoryTest.c
index 700e3e6..1188082 100644
--- a/IntelFrameworkModulePkg/Universal/BdsDxe/MemoryTest.c
+++ b/IntelFrameworkModulePkg/Universal/BdsDxe/MemoryTest.c
@@ -1,7 +1,7 @@
 /** @file
   Perform the platform memory test
 
-Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2004 - 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 @@ -318,7 +318,7 @@ BdsMemoryTest (
                               TempData
                               );
       if (TestPercent != PreviousValue) {
-        UnicodeValueToString (StrPercent, 0, TestPercent, 0);
+        UnicodeValueToStringS (StrPercent, sizeof (StrPercent), 0, 
+ TestPercent, 0);
         TmpStr = GetStringById (STRING_TOKEN (STR_MEMORY_TEST_PERCENT));
         if (TmpStr != NULL) {
           //
@@ -386,7 +386,7 @@ BdsMemoryTest (
 
 Done:
   if (!FeaturePcdGet(PcdBootlogoOnlyEnable)) {
-    UnicodeValueToString (StrTotalMemory, COMMA_TYPE, TotalMemorySize, 0);
+    UnicodeValueToStringS (StrTotalMemory, StrTotalMemorySize, 
+ COMMA_TYPE, TotalMemorySize, 0);
     if (StrTotalMemory[0] == L',') {
       StrTotalMemory++;
       StrTotalMemorySize -= sizeof (CHAR16);
--
1.9.5.msysgit.0



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH 2/7] MdeModulePkg: Replace [Ascii|Unicode]ValueToString
  2017-02-21 11:35 ` [PATCH 2/7] MdeModulePkg: " Hao Wu
@ 2017-02-28  8:13   ` Zeng, Star
  0 siblings, 0 replies; 13+ messages in thread
From: Zeng, Star @ 2017-02-28  8:13 UTC (permalink / raw)
  To: Wu, Hao A, edk2-devel@lists.01.org; +Cc: Yao, Jiewen, Tian, Feng

Reviewed-by: Star Zeng <star.zeng@intel.com>

-----Original Message-----
From: Wu, Hao A 
Sent: Tuesday, February 21, 2017 7:35 PM
To: edk2-devel@lists.01.org
Cc: Wu, Hao A <hao.a.wu@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>; Tian, Feng <feng.tian@intel.com>; Zeng, Star <star.zeng@intel.com>
Subject: [PATCH 2/7] MdeModulePkg: Replace [Ascii|Unicode]ValueToString

It is the follow up of commits 51f0ceb..9e32e97 to replace AsciiValueToString/UnicodeValueToString with AsciiValueToStringS/UnicodeValueToStringS.

Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Feng Tian <feng.tian@intel.com>
Cc: Star Zeng <star.zeng@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
---
 MdeModulePkg/Application/UiApp/FrontPage.c                    | 15 +++++--
 MdeModulePkg/Library/BootMaintenanceManagerUiLib/UpdatePage.c | 12 +++--
 MdeModulePkg/Library/DeviceManagerUiLib/DeviceManager.c       | 20 +++++++--
 MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleReportLib.c   | 10 ++++-
 MdeModulePkg/Library/DxeNetLib/DxeNetLib.c                    | 24 ++++++++--
 MdeModulePkg/Library/UefiHiiLib/HiiLib.c                      | 29 ++++++++++--
 MdeModulePkg/Universal/CapsulePei/UefiCapsule.c               | 18 ++++++--
 MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleService.c     | 10 ++++-
 MdeModulePkg/Universal/DriverSampleDxe/DriverSample.c         | 37 +++++++++------
 MdeModulePkg/Universal/HiiDatabaseDxe/ConfigKeywordHandler.c  | 29 ++++++++++--
 MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c         | 47 +++++++++++++++++---
 MdeModulePkg/Universal/Network/VlanConfigDxe/VlanConfigImpl.c | 14 ++++--
 MdeModulePkg/Universal/SetupBrowserDxe/Expression.c           | 11 ++++-
 MdeModulePkg/Universal/SetupBrowserDxe/IfrParse.c             |  4 +-
 MdeModulePkg/Universal/SetupBrowserDxe/Setup.c                | 38 +++++++++++++---
 15 files changed, 258 insertions(+), 60 deletions(-)

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



^ permalink raw reply related	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2017-02-28  8:13 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-02-21 11:35 [PATCH 0/7] Mark [Ascii|Unicode]ValueToString as deprecated Hao Wu
2017-02-21 11:35 ` [PATCH 1/7] IntelFrameworkModulePkg: Replace [Ascii|Unicode]ValueToString Hao Wu
2017-02-27  7:36   ` Fan, Jeff
2017-02-21 11:35 ` [PATCH 2/7] MdeModulePkg: " Hao Wu
2017-02-28  8:13   ` Zeng, Star
2017-02-21 11:35 ` [PATCH 3/7] Nt32Pkg: " Hao Wu
2017-02-22  1:57   ` Ni, Ruiyu
2017-02-21 11:35 ` [PATCH 4/7] SignedCapsulePkg: " Hao Wu
2017-02-27  1:09   ` Yao, Jiewen
2017-02-21 11:35 ` [PATCH 5/7] MdeModulePkg/PrintDxe: Handle the deprecation of [A|U]ValueToString Hao Wu
2017-02-21 11:35 ` [PATCH 6/7] MdeModulePkg/PrintLib: Add deprecated flag for APIs [A|U]ValueToString Hao Wu
2017-02-21 11:35 ` [PATCH 7/7] MdePkg/BasePrintLib: " Hao Wu
2017-02-23  1:50 ` [PATCH 0/7] Mark [Ascii|Unicode]ValueToString as deprecated Gao, Liming

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox