Use CopyMem() to guarantee the NULL terminal will always be appended to the destination string.
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Fu, Siyuan <siyuan.fu@intel.com>
Reviewed-by: Yao, Jiewen <jiewen.yao@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15810
6f19259b-4bc3-4df7-8a09-
765794883524
{\r
EFI_STATUS Status;\r
EFI_DHCP6_MODE_DATA Dhcp6ModeData;\r
- CHAR16 HandleName[64];\r
+ CHAR16 *HandleName;\r
\r
if (Dhcp6 == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
if (Dhcp6ModeData.Ia == NULL) {\r
- UnicodeSPrint (HandleName, sizeof (HandleName), L"DHCPv6 (No configured IA)");\r
+ HandleName = L"DHCPv6 (No configured IA)";\r
} else {\r
- StrnCpy (HandleName, mDhcp6ControllerName[Dhcp6ModeData.Ia->State], sizeof (HandleName) / sizeof (CHAR16) - 1);\r
+ if (Dhcp6ModeData.Ia->State > Dhcp6Rebinding) {\r
+ return EFI_DEVICE_ERROR;\r
+ }\r
+ HandleName = mDhcp6ControllerName[Dhcp6ModeData.Ia->State];\r
}\r
\r
Status = AddUnicodeString2 (\r
for (Index = 0; Index < 4; Index++) {\r
\r
if ((Lun[2 * Index] | Lun[2 * Index + 1]) == 0) {\r
- StrnCpy (TempStr, L"0-", StrLen (L"0-"));\r
+ CopyMem (TempStr, L"0-", sizeof (L"0-"));\r
} else {\r
TempStr[0] = (CHAR16) IScsiHexString[Lun[2 * Index] >> 4];\r
TempStr[1] = (CHAR16) IScsiHexString[Lun[2 * Index] & 0x0F];\r
\r
TempStr += StrLen (TempStr);\r
}\r
-\r
+ //\r
+ // Remove the last '-'\r
+ //\r
Str[StrLen (Str) - 1] = 0;\r
\r
for (Index = StrLen (Str) - 1; Index > 1; Index = Index - 2) {\r
// Print the interface type.\r
//\r
if (IfInfo->IfType == Ip6InterfaceTypeEthernet) {\r
- StrnCpy (PortString, IP6_ETHERNET, sizeof (PortString) / sizeof (CHAR16) - 1);\r
+ CopyMem (PortString, IP6_ETHERNET, sizeof (IP6_ETHERNET));\r
} else if (IfInfo->IfType == Ip6InterfaceTypeExperimentalEthernet) {\r
- StrnCpy (PortString, IP6_EXPERIMENTAL_ETHERNET, sizeof (PortString) / sizeof (CHAR16) - 1);\r
+ CopyMem (PortString, IP6_EXPERIMENTAL_ETHERNET, sizeof (IP6_EXPERIMENTAL_ETHERNET));\r
} else {\r
//\r
// Refer to RFC1700, chapter Number Hardware Type.\r
for (Index = 0; Index < IfInfo->HwAddressSize; Index++) {\r
\r
if (IfInfo->HwAddress.Addr[Index] < 0x10) {\r
- StrnCpy (FormatString, L"0%x-", sizeof (FormatString) / sizeof (CHAR16) - 1);\r
+ CopyMem (FormatString, L"0%x-", sizeof (L"0%x-"));\r
} else {\r
- StrnCpy (FormatString, L"%x-", sizeof (FormatString) / sizeof (CHAR16) - 1);\r
+ CopyMem (FormatString, L"%x-", sizeof (L"%x-"));\r
}\r
\r
Number = UnicodeSPrint (\r