]> git.proxmox.com Git - mirror_edk2.git/commitdiff
MdeModulePkg/Library/UefiBootManagerLib: Use safe string functions to refine code.
authorQiu Shumin <shumin.qiu@intel.com>
Wed, 1 Jul 2015 08:21:16 +0000 (08:21 +0000)
committershenshushi <shenshushi@Edk2>
Wed, 1 Jul 2015 08:21:16 +0000 (08:21 +0000)
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Qiu Shumin <shumin.qiu@intel.com>
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17782 6f19259b-4bc3-4df7-8a09-765794883524

MdeModulePkg/Library/UefiBootManagerLib/BmBoot.c
MdeModulePkg/Library/UefiBootManagerLib/BmPerformance.c

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