From a4faf336ea8e87d0b46e54ea64ce19c8574b69e5 Mon Sep 17 00:00:00 2001 From: "Fu, Siyuan" Date: Fri, 15 Aug 2014 05:33:34 +0000 Subject: Use string pointer instead string buffer to avoid string copy operation. 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 Reviewed-by: Yao, Jiewen git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15810 6f19259b-4bc3-4df7-8a09-765794883524 --- NetworkPkg/Dhcp6Dxe/ComponentName.c | 9 ++++++--- NetworkPkg/IScsiDxe/IScsiMisc.c | 6 ++++-- NetworkPkg/Ip6Dxe/Ip6ConfigNv.c | 8 ++++---- 3 files changed, 14 insertions(+), 9 deletions(-) (limited to 'NetworkPkg') diff --git a/NetworkPkg/Dhcp6Dxe/ComponentName.c b/NetworkPkg/Dhcp6Dxe/ComponentName.c index c7fd6075d..927a7fe7e 100644 --- a/NetworkPkg/Dhcp6Dxe/ComponentName.c +++ b/NetworkPkg/Dhcp6Dxe/ComponentName.c @@ -259,7 +259,7 @@ UpdateName ( { EFI_STATUS Status; EFI_DHCP6_MODE_DATA Dhcp6ModeData; - CHAR16 HandleName[64]; + CHAR16 *HandleName; if (Dhcp6 == NULL) { return EFI_INVALID_PARAMETER; @@ -279,9 +279,12 @@ UpdateName ( } if (Dhcp6ModeData.Ia == NULL) { - UnicodeSPrint (HandleName, sizeof (HandleName), L"DHCPv6 (No configured IA)"); + HandleName = L"DHCPv6 (No configured IA)"; } else { - StrnCpy (HandleName, mDhcp6ControllerName[Dhcp6ModeData.Ia->State], sizeof (HandleName) / sizeof (CHAR16) - 1); + if (Dhcp6ModeData.Ia->State > Dhcp6Rebinding) { + return EFI_DEVICE_ERROR; + } + HandleName = mDhcp6ControllerName[Dhcp6ModeData.Ia->State]; } Status = AddUnicodeString2 ( diff --git a/NetworkPkg/IScsiDxe/IScsiMisc.c b/NetworkPkg/IScsiDxe/IScsiMisc.c index 1968cc937..05f639aae 100644 --- a/NetworkPkg/IScsiDxe/IScsiMisc.c +++ b/NetworkPkg/IScsiDxe/IScsiMisc.c @@ -209,7 +209,7 @@ IScsiLunToUnicodeStr ( for (Index = 0; Index < 4; Index++) { if ((Lun[2 * Index] | Lun[2 * Index + 1]) == 0) { - StrnCpy (TempStr, L"0-", StrLen (L"0-")); + CopyMem (TempStr, L"0-", sizeof (L"0-")); } else { TempStr[0] = (CHAR16) IScsiHexString[Lun[2 * Index] >> 4]; TempStr[1] = (CHAR16) IScsiHexString[Lun[2 * Index] & 0x0F]; @@ -223,7 +223,9 @@ IScsiLunToUnicodeStr ( TempStr += StrLen (TempStr); } - + // + // Remove the last '-' + // Str[StrLen (Str) - 1] = 0; for (Index = StrLen (Str) - 1; Index > 1; Index = Index - 2) { diff --git a/NetworkPkg/Ip6Dxe/Ip6ConfigNv.c b/NetworkPkg/Ip6Dxe/Ip6ConfigNv.c index 19328e6e5..1b878a56a 100644 --- a/NetworkPkg/Ip6Dxe/Ip6ConfigNv.c +++ b/NetworkPkg/Ip6Dxe/Ip6ConfigNv.c @@ -718,9 +718,9 @@ Ip6ConvertInterfaceInfoToString ( // Print the interface type. // if (IfInfo->IfType == Ip6InterfaceTypeEthernet) { - StrnCpy (PortString, IP6_ETHERNET, sizeof (PortString) / sizeof (CHAR16) - 1); + CopyMem (PortString, IP6_ETHERNET, sizeof (IP6_ETHERNET)); } else if (IfInfo->IfType == Ip6InterfaceTypeExperimentalEthernet) { - StrnCpy (PortString, IP6_EXPERIMENTAL_ETHERNET, sizeof (PortString) / sizeof (CHAR16) - 1); + CopyMem (PortString, IP6_EXPERIMENTAL_ETHERNET, sizeof (IP6_EXPERIMENTAL_ETHERNET)); } else { // // Refer to RFC1700, chapter Number Hardware Type. @@ -747,9 +747,9 @@ Ip6ConvertInterfaceInfoToString ( for (Index = 0; Index < IfInfo->HwAddressSize; Index++) { if (IfInfo->HwAddress.Addr[Index] < 0x10) { - StrnCpy (FormatString, L"0%x-", sizeof (FormatString) / sizeof (CHAR16) - 1); + CopyMem (FormatString, L"0%x-", sizeof (L"0%x-")); } else { - StrnCpy (FormatString, L"%x-", sizeof (FormatString) / sizeof (CHAR16) - 1); + CopyMem (FormatString, L"%x-", sizeof (L"%x-")); } Number = UnicodeSPrint ( -- cgit v1.2.3