UINT16 VlanId;\r
CHAR16 *String;\r
UINTN Index;\r
+ UINTN BufferSize;\r
\r
ASSERT (MacString != NULL);\r
\r
// If VLAN is configured, it will need extra 5 characters like "\0005".\r
// Plus one unicode character for the null-terminator.\r
//\r
- String = AllocateZeroPool ((2 * HwAddressSize + 5 + 1) * sizeof (CHAR16));\r
+ BufferSize = (2 * HwAddressSize + 5 + 1) * sizeof (CHAR16);\r
+ String = AllocateZeroPool (BufferSize);\r
if (String == NULL) {\r
return EFI_OUT_OF_RESOURCES;\r
}\r
//\r
HwAddress = &MacAddress.Addr[0];\r
for (Index = 0; Index < HwAddressSize; Index++) {\r
- String += UnicodeValueToString (String, PREFIX_ZERO | RADIX_HEX, *(HwAddress++), 2);\r
+ UnicodeValueToStringS (\r
+ String,\r
+ BufferSize - ((UINTN)String - (UINTN)*MacString),\r
+ PREFIX_ZERO | RADIX_HEX,\r
+ *(HwAddress++),\r
+ 2\r
+ );\r
+ String += StrnLenS (String, (BufferSize - ((UINTN)String - (UINTN)*MacString)) / sizeof (CHAR16));\r
}\r
\r
//\r
VlanId = NetLibGetVlanId (ServiceHandle);\r
if (VlanId != 0) {\r
*String++ = L'\\';\r
- String += UnicodeValueToString (String, PREFIX_ZERO | RADIX_HEX, VlanId, 4);\r
+ UnicodeValueToStringS (\r
+ String,\r
+ BufferSize - ((UINTN)String - (UINTN)*MacString),\r
+ PREFIX_ZERO | RADIX_HEX,\r
+ VlanId,\r
+ 4\r
+ );\r
+ String += StrnLenS (String, (BufferSize - ((UINTN)String - (UINTN)*MacString)) / sizeof (CHAR16));\r
}\r
\r
//\r