Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Qiu Shumin <shumin....@intel.com>
---
 MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c   | 24 ++++++++++++++--------
 .../Library/UefiBootManagerLib/BmPerformance.c     | 20 ++++++++++--------
 2 files changed, 28 insertions(+), 16 deletions(-)

diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c 
b/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c
index 2d3d57b..028edc3 100644
--- a/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c
+++ b/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c
@@ -552,6 +552,7 @@ BmGetUsbDescription (
   CHAR16                       *SerialNumber;
   CHAR16                       *Description;
   EFI_USB_DEVICE_DESCRIPTOR    DevDesc;
+  UINTN                        DescMaxSize;
 
   Status = gBS->HandleProtocol (
                   Handle,
@@ -606,15 +607,16 @@ BmGetUsbDescription (
     return NULL;
   }
 
-  Description = AllocateZeroPool (StrSize (Manufacturer) + StrSize (Product) + 
StrSize (SerialNumber));
+  DescMaxSize = StrSize (Manufacturer) + StrSize (Product) + StrSize 
(SerialNumber);
+  Description = AllocateZeroPool (DescMaxSize);
   ASSERT (Description != NULL);
-  StrCat (Description, Manufacturer);
-  StrCat (Description, L" ");
+  StrCatS (Description, DescMaxSize/sizeof(CHAR16), Manufacturer);
+  StrCatS (Description, DescMaxSize/sizeof(CHAR16), L" ");
 
-  StrCat (Description, Product);  
-  StrCat (Description, L" ");
+  StrCatS (Description, DescMaxSize/sizeof(CHAR16), Product);  
+  StrCatS (Description, DescMaxSize/sizeof(CHAR16), L" ");
 
-  StrCat (Description, SerialNumber);
+  StrCatS (Description, DescMaxSize/sizeof(CHAR16), SerialNumber);
 
   if (Manufacturer != &NullChar) {
     FreePool (Manufacturer);
@@ -774,8 +776,14 @@ BmGetBootDescription (
       //
       Temp = AllocatePool (StrSize (DefaultDescription) + sizeof 
(mBmUefiPrefix)); 
       ASSERT (Temp != NULL);
-      StrCpy (Temp, mBmUefiPrefix);
-      StrCat (Temp, DefaultDescription);
+      StrCpyS ( Temp, 
+                (StrSize (DefaultDescription) + sizeof 
(mBmUefiPrefix))/sizeof(CHAR16), 
+                mBmUefiPrefix
+                );
+      StrCatS ( Temp, 
+                (StrSize (DefaultDescription) + sizeof 
(mBmUefiPrefix))/sizeof(CHAR16), 
+                DefaultDescription
+                );
       FreePool (DefaultDescription);
       DefaultDescription = Temp;
       break;
diff --git a/MdeModulePkg/Library/UefiBootManagerLib/BmPerformance.c 
b/MdeModulePkg/Library/UefiBootManagerLib/BmPerformance.c
index 32229d0..dd937a7 100644
--- a/MdeModulePkg/Library/UefiBootManagerLib/BmPerformance.c
+++ b/MdeModulePkg/Library/UefiBootManagerLib/BmPerformance.c
@@ -26,12 +26,14 @@ EFI_PHYSICAL_ADDRESS      mBmAcpiLowMemoryBase = 
0x0FFFFFFFFULL;
 
   @param PdbFileName     The long PDB file name.
   @param GaugeString     The output string to be logged by performance logger.
+  @param StringSize      The buffer size of GaugeString in bytes.
 
 **/
 VOID
 BmGetShortPdbFileName (
   IN  CONST CHAR8  *PdbFileName,
-  OUT       CHAR8  *GaugeString
+  OUT       CHAR8  *GaugeString,
+  IN        UINTN   StringSize
   )
 {
   UINTN Index;
@@ -40,7 +42,7 @@ BmGetShortPdbFileName (
   UINTN EndIndex;
 
   if (PdbFileName == NULL) {
-    AsciiStrCpy (GaugeString, " ");
+    AsciiStrCpyS (GaugeString, StringSize, " ");
   } else {
     StartIndex = 0;
     for (EndIndex = 0; PdbFileName[EndIndex] != 0; EndIndex++)
@@ -78,12 +80,14 @@ BmGetShortPdbFileName (
 
   @param Handle          Driver handle.
   @param GaugeString     The output string to be logged by performance logger.
+  @param StringSize      The buffer size of GaugeString in bytes.
 
 **/
 VOID
 BmGetNameFromHandle (
   IN  EFI_HANDLE     Handle,
-  OUT CHAR8          *GaugeString
+  OUT CHAR8          *GaugeString,
+  IN  UINTN          StringSize
   )
 {
   EFI_STATUS                  Status;
@@ -91,7 +95,7 @@ BmGetNameFromHandle (
   CHAR8                       *PdbFileName;
   EFI_DRIVER_BINDING_PROTOCOL *DriverBinding;
 
-  AsciiStrCpy (GaugeString, " ");
+  AsciiStrCpyS (GaugeString, StringSize, " ");
 
   //
   // Get handle name from image protocol
@@ -127,7 +131,7 @@ BmGetNameFromHandle (
   PdbFileName = PeCoffLoaderGetPdbPointer (Image->ImageBase);
 
   if (PdbFileName != NULL) {
-    BmGetShortPdbFileName (PdbFileName, GaugeString);
+    BmGetShortPdbFileName (PdbFileName, GaugeString, StringSize);
   }
 
   return ;
@@ -285,9 +289,9 @@ BmWriteBootToOsPerformanceData (
 
     if (Duration > 0) {
 
-      BmGetNameFromHandle (Handles[Index], GaugeString);
+      BmGetNameFromHandle (Handles[Index], GaugeString, PERF_TOKEN_LENGTH);
 
-      AsciiStrCpy (mBmPerfData.Token, GaugeString);
+      AsciiStrCpyS (mBmPerfData.Token, PERF_TOKEN_SIZE, GaugeString);
       mBmPerfData.Duration = Duration;
 
       CopyMem (Ptr, &mBmPerfData, sizeof (PERF_DATA));
@@ -316,7 +320,7 @@ BmWriteBootToOsPerformanceData (
 
       ZeroMem (&mBmPerfData, sizeof (PERF_DATA));
 
-      AsciiStrnCpy (mBmPerfData.Token, Token, PERF_TOKEN_LENGTH);
+      AsciiStrCpyS (mBmPerfData.Token, PERF_TOKEN_SIZE, Token);
       if (StartTicker == 1) {
         StartTicker = StartValue;
       }
-- 
1.9.5.msysgit.1



------------------------------------------------------------------------------
Monitor 25 network devices or servers for free with OpManager!
OpManager is web-based network management software that monitors 
network devices and physical & virtual servers, alerts via email & sms 
for fault. Monitor 25 devices for free with no restriction. Download now
http://ad.doubleclick.net/ddm/clk/292181274;119417398;o
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to