Revision: 17782
          http://sourceforge.net/p/edk2/code/17782
Author:   shenshushi
Date:     2015-07-01 08:21:16 +0000 (Wed, 01 Jul 2015)
Log Message:
-----------
MdeModulePkg/Library/UefiBootManagerLib: Use safe string functions to refine 
code.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Qiu Shumin <shumin....@intel.com>
Reviewed-by: Ruiyu Ni <ruiyu...@intel.com>

Modified Paths:
--------------
    trunk/edk2/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c
    trunk/edk2/MdeModulePkg/Library/UefiBootManagerLib/BmPerformance.c

Modified: trunk/edk2/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c
===================================================================
--- trunk/edk2/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c 2015-07-01 
08:19:56 UTC (rev 17781)
+++ trunk/edk2/MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c 2015-07-01 
08:21:16 UTC (rev 17782)
@@ -552,6 +552,7 @@
   CHAR16                       *SerialNumber;
   CHAR16                       *Description;
   EFI_USB_DEVICE_DESCRIPTOR    DevDesc;
+  UINTN                        DescMaxSize;
 
   Status = gBS->HandleProtocol (
                   Handle,
@@ -606,15 +607,16 @@
     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 @@
       //
       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;

Modified: trunk/edk2/MdeModulePkg/Library/UefiBootManagerLib/BmPerformance.c
===================================================================
--- trunk/edk2/MdeModulePkg/Library/UefiBootManagerLib/BmPerformance.c  
2015-07-01 08:19:56 UTC (rev 17781)
+++ trunk/edk2/MdeModulePkg/Library/UefiBootManagerLib/BmPerformance.c  
2015-07-01 08:21:16 UTC (rev 17782)
@@ -26,12 +26,14 @@
 
   @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 @@
   UINTN EndIndex;
 
   if (PdbFileName == NULL) {
-    AsciiStrCpy (GaugeString, " ");
+    AsciiStrCpyS (GaugeString, StringSize, " ");
   } else {
     StartIndex = 0;
     for (EndIndex = 0; PdbFileName[EndIndex] != 0; EndIndex++)
@@ -78,12 +80,14 @@
 
   @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 @@
   CHAR8                       *PdbFileName;
   EFI_DRIVER_BINDING_PROTOCOL *DriverBinding;
 
-  AsciiStrCpy (GaugeString, " ");
+  AsciiStrCpyS (GaugeString, StringSize, " ");
 
   //
   // Get handle name from image protocol
@@ -127,7 +131,7 @@
   PdbFileName = PeCoffLoaderGetPdbPointer (Image->ImageBase);
 
   if (PdbFileName != NULL) {
-    BmGetShortPdbFileName (PdbFileName, GaugeString);
+    BmGetShortPdbFileName (PdbFileName, GaugeString, StringSize);
   }
 
   return ;
@@ -285,9 +289,9 @@
 
     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 @@
 
       ZeroMem (&mBmPerfData, sizeof (PERF_DATA));
 
-      AsciiStrnCpy (mBmPerfData.Token, Token, PERF_TOKEN_LENGTH);
+      AsciiStrCpyS (mBmPerfData.Token, PERF_TOKEN_SIZE, Token);
       if (StartTicker == 1) {
         StartTicker = StartValue;
       }


------------------------------------------------------------------------------
Don't Limit Your Business. Reach for the Cloud.
GigeNET's Cloud Solutions provide you with the tools and support that
you need to offload your IT needs and focus on growing your business.
Configured For All Businesses. Start Your Cloud Today.
https://www.gigenetcloud.com/
_______________________________________________
edk2-commits mailing list
edk2-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-commits

Reply via email to