CHAR16 *SerialNumber;\r
CHAR16 *Description;\r
EFI_USB_DEVICE_DESCRIPTOR DevDesc;\r
+ UINTN DescMaxSize;\r
\r
Status = gBS->HandleProtocol (\r
Handle,\r
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
//\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
\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
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
\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
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
PdbFileName = PeCoffLoaderGetPdbPointer (Image->ImageBase);\r
\r
if (PdbFileName != NULL) {\r
- BmGetShortPdbFileName (PdbFileName, GaugeString);\r
+ BmGetShortPdbFileName (PdbFileName, GaugeString, StringSize);\r
}\r
\r
return ;\r
\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
\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