]> git.proxmox.com Git - mirror_edk2.git/commitdiff
MdePkg UefiDevicePathLib: Remove unsafe string functions
authorHao Wu <hao.a.wu@intel.com>
Tue, 30 Jun 2015 06:29:24 +0000 (06:29 +0000)
committerhwu1225 <hwu1225@Edk2>
Tue, 30 Jun 2015 06:29:24 +0000 (06:29 +0000)
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
Reviewed-by: Jaben Carsey <jaben.carsey@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17741 6f19259b-4bc3-4df7-8a09-765794883524

MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c

index d58f06905a21378c7ecbaf6eea6a1b4206f4d66c..a05f42ce0011be4d51a3861b90be465e392ba1be 100644 (file)
@@ -2596,7 +2596,16 @@ DevPathFromTextUsbWwid (
   UsbWwid->VendorId        = (UINT16) Strtoi (VIDStr);\r
   UsbWwid->ProductId       = (UINT16) Strtoi (PIDStr);\r
   UsbWwid->InterfaceNumber = (UINT16) Strtoi (InterfaceNumStr);\r
-  StrnCpy ((CHAR16 *) ((UINT8 *) UsbWwid + sizeof (USB_WWID_DEVICE_PATH)), SerialNumberStr, SerialNumberStrLen);\r
+\r
+  //\r
+  // There is no memory allocated in UsbWwid for the '\0' in SerialNumberStr.\r
+  // Therefore, the '\0' will not be copied.\r
+  //\r
+  CopyMem (\r
+    (UINT8 *) UsbWwid + sizeof (USB_WWID_DEVICE_PATH),\r
+    SerialNumberStr,\r
+    SerialNumberStrLen * sizeof (CHAR16)\r
+    );\r
 \r
   return (EFI_DEVICE_PATH_PROTOCOL *) UsbWwid;\r
 }\r
@@ -2759,8 +2768,8 @@ DevPathFromTextBluetooth (
     if (TempNumBuffer == NULL) {\r
       break;\r
     }\r
-    StrnCpy (TempNumBuffer, L"0x", TempBufferSize / sizeof (CHAR16));\r
-    StrnCat (TempNumBuffer + StrLen (L"0x"), Walker, TempBufferSize / sizeof (CHAR16) - StrLen (L"0x") );\r
+    StrCpyS (TempNumBuffer, TempBufferSize / sizeof (CHAR16), L"0x");\r
+    StrCatS (TempNumBuffer, TempBufferSize / sizeof (CHAR16), Walker);\r
     BluetoothDp->BD_ADDR.Address[Index] = (UINT8)Strtoi (TempNumBuffer);\r
     FreePool (TempNumBuffer);\r
     Index--;\r
@@ -2982,7 +2991,7 @@ DevPathFromTextFilePath (
                                     (UINT16) (sizeof (FILEPATH_DEVICE_PATH) + StrLen (TextDeviceNode) * 2)\r
                                     );\r
 \r
-  StrCpy (File->PathName, TextDeviceNode);\r
+  StrCpyS (File->PathName, StrLen (TextDeviceNode) + 1, TextDeviceNode);\r
 \r
   return (EFI_DEVICE_PATH_PROTOCOL *) File;\r
 }\r