]> git.proxmox.com Git - mirror_edk2.git/commitdiff
EmulatorPkg: Add -D DISABLE_NEW_DEPRECATED_INTERFACES
authorMichael D Kinney <michael.d.kinney@intel.com>
Wed, 7 Aug 2019 00:10:03 +0000 (17:10 -0700)
committerMichael D Kinney <michael.d.kinney@intel.com>
Mon, 19 Aug 2019 16:49:54 +0000 (09:49 -0700)
https://bugzilla.tianocore.org/show_bug.cgi?id=162

Update EmulatorPkg specific modules and libraries to use
safe string functions in BaseLib and safe PcdSetxx()
functions in PcdLib.  With these updates, the define
DISABLE_NEW_DEPRECATED_INTERFACES is enabled in the DSC
file.

Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Andrew Fish <afish@apple.com>
Cc: Ray Ni <ray.ni@intel.com>
Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
Reviewed-by: Hao A Wu <hao.a.wu@intel.com>
Acked-by: Jordan Justen <jordan.l.justen@intel.com>
Tested-by: Andrew Fish <afish@apple.com>
EmulatorPkg/EmuBusDriverDxe/EmuBusDriverDxe.c
EmulatorPkg/EmulatorPkg.dsc
EmulatorPkg/FlashMapPei/FlashMapPei.c
EmulatorPkg/Library/SmbiosLib/SmbiosLib.c
EmulatorPkg/Library/ThunkProtocolList/ThunkProtocolList.c
EmulatorPkg/Unix/Host/BerkeleyPacketFilter.c
EmulatorPkg/Unix/Host/PosixFileSystem.c
EmulatorPkg/Unix/Host/X11GraphicsWindow.c
EmulatorPkg/Win/Host/WinFileSystem.c

index 0bf6e723a1d1b04cac649274e05ee86fea95baee..d8380f2be9cecf7e5008637c8b4907fd247d2d3c 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
  Emu Bus driver\r
 \r
-Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>\r
 Portions copyright (c) 2011, Apple Inc. All rights reserved.\r
 SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
@@ -256,7 +256,12 @@ EmuBusDriverBindingStart (
 \r
       EmuDevice->ControllerNameTable = NULL;\r
 \r
-      StrnCpy (ComponentName, EmuIoThunk->ConfigString, sizeof (ComponentName)/sizeof (CHAR16));\r
+      StrnCpyS (\r
+        ComponentName,\r
+        sizeof (ComponentName) / sizeof (CHAR16),\r
+        EmuIoThunk->ConfigString,\r
+        sizeof (ComponentName) / sizeof (CHAR16)\r
+        );\r
 \r
       EmuDevice->DevicePath = EmuBusCreateDevicePath (\r
                                   ParentDevicePath,\r
index 153da464f11b71929b1ef7c164764df65e467cb1..529adfe1fa4e6f6e73bfdeaba4d457ca6b3dbf3a 100644 (file)
 !include NetworkPkg/Network.dsc.inc\r
 \r
 [BuildOptions]\r
+  #\r
+  # Disable deprecated APIs.\r
+  #\r
+  *_*_*_CC_FLAGS = -D DISABLE_NEW_DEPRECATED_INTERFACES\r
+\r
   MSFT:DEBUG_*_*_CC_FLAGS = /Od /Oy-\r
   MSFT:NOOPT_*_*_CC_FLAGS = /Od /Oy-\r
 \r
   MSFT:*_*_*_DLINK_FLAGS     = /ALIGN:4096 /FILEALIGN:4096 /SUBSYSTEM:CONSOLE\r
   MSFT:DEBUG_*_*_DLINK_FLAGS = /EXPORT:InitializeDriver=$(IMAGE_ENTRY_POINT) /BASE:0x10000\r
   MSFT:NOOPT_*_*_DLINK_FLAGS = /EXPORT:InitializeDriver=$(IMAGE_ENTRY_POINT) /BASE:0x10000\r
-\r
index 2a468e43acc6fcd90fd192c8de9b45a5a8cb2d9c..7744065dd6afddd8ba5f0f68f3b6a90dc18c6346 100644 (file)
@@ -1,7 +1,7 @@
 /*++ @file\r
   PEIM to build GUIDed HOBs for platform specific flash map\r
 \r
-Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>\r
 Portions copyright (c) 2011, Apple Inc. All rights reserved.\r
 SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
@@ -69,9 +69,9 @@ Returns:
     return Status;\r
   }\r
 \r
-  PcdSet64 (PcdFlashNvStorageVariableBase64, PcdGet64 (PcdEmuFlashNvStorageVariableBase) + FdFixUp);\r
-  PcdSet64 (PcdFlashNvStorageFtwWorkingBase64, PcdGet64 (PcdEmuFlashNvStorageFtwWorkingBase) + FdFixUp);\r
-  PcdSet64 (PcdFlashNvStorageFtwSpareBase64, PcdGet64 (PcdEmuFlashNvStorageFtwSpareBase) + FdFixUp);\r
+  PcdSet64S (PcdFlashNvStorageVariableBase64, PcdGet64 (PcdEmuFlashNvStorageVariableBase) + FdFixUp);\r
+  PcdSet64S (PcdFlashNvStorageFtwWorkingBase64, PcdGet64 (PcdEmuFlashNvStorageFtwWorkingBase) + FdFixUp);\r
+  PcdSet64S (PcdFlashNvStorageFtwSpareBase64, PcdGet64 (PcdEmuFlashNvStorageFtwSpareBase) + FdFixUp);\r
 \r
   return EFI_SUCCESS;\r
 }\r
index 331122e200efb9eeec9731a1afdaf49610639607..3acbb23644aaf5bde4a0cd8508bbd21e9fe38f0a 100644 (file)
@@ -4,7 +4,7 @@
 \r
 \r
 Copyright (c) 2012, Apple Inc. All rights reserved.\r
-Portitions Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>\r
+Portitions Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>\r
 SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
@@ -223,7 +223,7 @@ SmbiosLibUpdateUnicodeString (
   if (Ascii == NULL) {\r
     return EFI_OUT_OF_RESOURCES;\r
   }\r
-  UnicodeStrToAsciiStr (String, Ascii);\r
+  UnicodeStrToAsciiStrS (String, Ascii, StrSize (String));\r
 \r
   StringIndex = StringNumber;\r
   Status = gSmbios->UpdateString (gSmbios, &SmbiosHandle, &StringIndex, Ascii);\r
index b7aacc851c365b4ac38474ad48d9b599ef99fb39..3a7b6d1cebb4526184c8a18292442add5db84d7a 100644 (file)
@@ -2,7 +2,7 @@
   Emulator Thunk to abstract OS services from pure EFI code\r
 \r
   Copyright (c) 2008 - 2011, Apple Inc. All rights reserved.<BR>\r
-  Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2011 - 2019, Intel Corporation. All rights reserved.<BR>\r
 \r
   SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
@@ -37,6 +37,7 @@ AddThunkProtocol (
   IN  BOOLEAN                 EmuBusDriver\r
   )\r
 {\r
+  UINTN                       Size;\r
   CHAR16                      *StartString;\r
   CHAR16                      *SubString;\r
   UINTN                       Instance;\r
@@ -47,8 +48,12 @@ AddThunkProtocol (
   }\r
 \r
   Instance = 0;\r
-  StartString = AllocatePool (StrSize (ConfigString));\r
-  StrCpy (StartString, ConfigString);\r
+  Size = StrSize (ConfigString);\r
+  StartString = AllocatePool (Size);\r
+  if (StartString == NULL) {\r
+    return EFI_OUT_OF_RESOURCES;\r
+  }\r
+  StrCpyS (StartString, Size / sizeof (CHAR16), ConfigString);\r
   while (*StartString != '\0') {\r
 \r
     //\r
index e318a90740c5c8fc625b7122f3cbf0f0982bbea5..8d0eb0d197b011932b65a1655ef3a8e90e1e3f5a 100644 (file)
@@ -4,7 +4,7 @@
 \r
  Tested on Mac OS X.\r
 \r
-Copyright (c) 2004 - 2009, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2004 - 2019, Intel Corporation. All rights reserved.<BR>\r
 Portitions copyright (c) 2011, Apple Inc. All rights reserved.\r
 \r
 SPDX-License-Identifier: BSD-2-Clause-Patent\r
@@ -242,7 +242,7 @@ EmuSnpStart (
     //\r
     // Associate our interface with this BPF file descriptor.\r
     //\r
-    AsciiStrCpy (BoundIf.ifr_name, Private->InterfaceName);\r
+    AsciiStrCpyS (BoundIf.ifr_name, sizeof (BoundIf.ifr_name), Private->InterfaceName);\r
     if (ioctl (Private->BpfFd, BIOCSETIF, &BoundIf) < 0) {\r
       goto DeviceErrorExit;\r
     }\r
@@ -1016,7 +1016,11 @@ GetInterfaceMacAddr (
     goto Exit;\r
   }\r
 \r
-  UnicodeStrToAsciiStr (Private->Thunk->ConfigString, Private->InterfaceName);\r
+  UnicodeStrToAsciiStrS (\r
+    Private->Thunk->ConfigString,\r
+    Private->InterfaceName,\r
+    StrSize (Private->Thunk->ConfigString)\r
+    );\r
 \r
   Status = EFI_NOT_FOUND;\r
   If = IfAddrs;\r
index 6ba3b59d7a5b8e5ce67cb34433cfb3818f97ad3d..0a618abcd831a4ba7ab5d0f841cce5441a87a436 100644 (file)
@@ -127,7 +127,11 @@ PosixOpenVolume (
   if (PrivateFile->FileName == NULL) {\r
     goto Done;\r
   }\r
-  AsciiStrCpy (PrivateFile->FileName, Private->FilePath);\r
+  AsciiStrCpyS (\r
+    PrivateFile->FileName,\r
+    AsciiStrSize (Private->FilePath),\r
+    Private->FilePath\r
+    );\r
 \r
   PrivateFile->Signature            = EMU_EFI_FILE_PRIVATE_SIGNATURE;\r
   PrivateFile->Thunk                = Private->Thunk;\r
@@ -377,7 +381,7 @@ PosixFileOpen (
   EFI_FILE_INFO                     *Info;\r
   struct stat                       finfo;\r
   int                               res;\r
-\r
+  UINTN                             Size;\r
 \r
   PrivateFile     = EMU_EFI_FILE_PRIVATE_DATA_FROM_THIS (This);\r
   PrivateRoot     = EMU_SIMPLE_FILE_SYSTEM_PRIVATE_DATA_FROM_THIS (PrivateFile->SimpleFileSystem);\r
@@ -412,17 +416,18 @@ OpenRoot:
 \r
   CopyMem (NewPrivateFile, PrivateFile, sizeof (EMU_EFI_FILE_PRIVATE));\r
 \r
-  NewPrivateFile->FileName = malloc (AsciiStrSize (PrivateFile->FileName) + 1 + StrLen (FileName) + 1);\r
+  Size = AsciiStrSize (PrivateFile->FileName) + 1 + StrLen (FileName) + 1;\r
+  NewPrivateFile->FileName = malloc (Size);\r
   if (NewPrivateFile->FileName == NULL) {\r
     goto Done;\r
   }\r
 \r
   if (*FileName == L'\\') {\r
-    AsciiStrCpy (NewPrivateFile->FileName, PrivateRoot->FilePath);\r
+    AsciiStrCpyS (NewPrivateFile->FileName, Size, PrivateRoot->FilePath);\r
     // Skip first '\'.\r
     Src = FileName + 1;\r
   } else {\r
-    AsciiStrCpy (NewPrivateFile->FileName, PrivateFile->FileName);\r
+    AsciiStrCpyS (NewPrivateFile->FileName, Size, PrivateFile->FileName);\r
     Src = FileName;\r
   }\r
   Dst = NewPrivateFile->FileName + AsciiStrLen (NewPrivateFile->FileName);\r
@@ -748,7 +753,7 @@ PosixFileRead (
   UINTN                   NameSize;\r
   UINTN                   ResultSize;\r
   CHAR8                   *FullFileName;\r
-\r
+  UINTN                   FullFileNameSize;\r
 \r
   PrivateFile = EMU_EFI_FILE_PRIVATE_DATA_FROM_THIS (This);\r
 \r
@@ -798,15 +803,16 @@ PosixFileRead (
 \r
   *BufferSize = ResultSize;\r
 \r
-  FullFileName = malloc (AsciiStrLen(PrivateFile->FileName) + 1 + NameSize);\r
+  FullFileNameSize = AsciiStrLen(PrivateFile->FileName) + 1 + NameSize;\r
+  FullFileName = malloc (FullFileNameSize);\r
   if (FullFileName == NULL) {\r
     Status = EFI_OUT_OF_RESOURCES;\r
     goto Done;\r
   }\r
 \r
-  AsciiStrCpy (FullFileName, PrivateFile->FileName);\r
-  AsciiStrCat (FullFileName, "/");\r
-  AsciiStrCat (FullFileName, PrivateFile->Dirent->d_name);\r
+  AsciiStrCpyS (FullFileName, FullFileNameSize, PrivateFile->FileName);\r
+  AsciiStrCatS (FullFileName, FullFileNameSize, "/");\r
+  AsciiStrCatS (FullFileName, FullFileNameSize, PrivateFile->Dirent->d_name);\r
   Status = UnixSimpleFileSystemFileInfo (\r
             PrivateFile,\r
             FullFileName,\r
@@ -1017,7 +1023,11 @@ PosixFileGetInfo (
     FileSystemInfoBuffer->BlockSize   = buf.f_bsize;\r
 \r
 \r
-    StrCpy ((CHAR16 *) FileSystemInfoBuffer->VolumeLabel, PrivateRoot->VolumeLabel);\r
+    StrCpyS (\r
+      (CHAR16 *) FileSystemInfoBuffer->VolumeLabel,\r
+      (*BufferSize - SIZE_OF_EFI_FILE_SYSTEM_INFO) / sizeof (CHAR16),\r
+      PrivateRoot->VolumeLabel\r
+      );\r
     *BufferSize = SIZE_OF_EFI_FILE_SYSTEM_INFO + StrSize (PrivateRoot->VolumeLabel);\r
 \r
   } else if (CompareGuid (InformationType, &gEfiFileSystemVolumeLabelInfoIdGuid)) {\r
@@ -1026,7 +1036,11 @@ PosixFileGetInfo (
       return EFI_BUFFER_TOO_SMALL;\r
     }\r
 \r
-    StrCpy ((CHAR16 *) Buffer, PrivateRoot->VolumeLabel);\r
+    StrCpyS (\r
+      (CHAR16 *) Buffer,\r
+      *BufferSize / sizeof (CHAR16),\r
+      PrivateRoot->VolumeLabel\r
+      );\r
     *BufferSize = StrSize (PrivateRoot->VolumeLabel);\r
 \r
   }\r
@@ -1082,7 +1096,7 @@ PosixFileSetInfo (
   CHAR16                            *UnicodeFilePtr;\r
   int                               UnixStatus;\r
   struct utimbuf                    Utime;\r
-\r
+  UINTN                             Size;\r
 \r
   PrivateFile = EMU_EFI_FILE_PRIVATE_DATA_FROM_THIS (This);\r
   PrivateRoot = EMU_SIMPLE_FILE_SYSTEM_PRIVATE_DATA_FROM_THIS (PrivateFile->SimpleFileSystem);\r
@@ -1110,7 +1124,11 @@ PosixFileSetInfo (
       goto Done;\r
     }\r
 \r
-    StrCpy (PrivateRoot->VolumeLabel, NewFileSystemInfo->VolumeLabel);\r
+    StrCpyS (\r
+      PrivateRoot->VolumeLabel,\r
+      StrSize (NewFileSystemInfo->VolumeLabel) / sizeof (CHAR16),\r
+      NewFileSystemInfo->VolumeLabel\r
+      );\r
 \r
     Status = EFI_SUCCESS;\r
     goto Done;\r
@@ -1125,7 +1143,11 @@ PosixFileSetInfo (
       goto Done;\r
     }\r
 \r
-    StrCpy (PrivateRoot->VolumeLabel, (CHAR16 *) Buffer);\r
+    StrCpyS (\r
+      PrivateRoot->VolumeLabel,\r
+      StrSize (PrivateRoot->VolumeLabel) / sizeof (CHAR16),\r
+      (CHAR16 *) Buffer\r
+      );\r
 \r
     Status = EFI_SUCCESS;\r
     goto Done;\r
@@ -1183,28 +1205,34 @@ PosixFileSetInfo (
     goto Done;\r
   }\r
 \r
-  AsciiStrCpy (OldFileName, PrivateFile->FileName);\r
+  AsciiStrCpyS (\r
+    OldFileName,\r
+    AsciiStrSize (PrivateFile->FileName),\r
+    PrivateFile->FileName\r
+    );\r
 \r
   //\r
   // Make full pathname from new filename and rootpath.\r
   //\r
   if (NewFileInfo->FileName[0] == '\\') {\r
-    NewFileName = malloc (AsciiStrLen (PrivateRoot->FilePath) + 1 + StrLen (NewFileInfo->FileName) + 1);\r
+    Size = AsciiStrLen (PrivateRoot->FilePath) + 1 + StrLen (NewFileInfo->FileName) + 1;\r
+    NewFileName = malloc (Size);\r
     if (NewFileName == NULL) {\r
       goto Done;\r
     }\r
 \r
-    AsciiStrCpy (NewFileName, PrivateRoot->FilePath);\r
+    AsciiStrCpyS (NewFileName, Size, PrivateRoot->FilePath);\r
     AsciiFilePtr = NewFileName + AsciiStrLen(NewFileName);\r
     UnicodeFilePtr = NewFileInfo->FileName + 1;\r
     *AsciiFilePtr++ ='/';\r
   } else {\r
-    NewFileName = malloc (AsciiStrLen (PrivateFile->FileName) + 2 + StrLen (NewFileInfo->FileName) + 1);\r
+    Size = AsciiStrLen (PrivateFile->FileName) + 2 + StrLen (NewFileInfo->FileName) + 1;\r
+    NewFileName = malloc (Size);\r
     if (NewFileName == NULL) {\r
       goto Done;\r
     }\r
 \r
-    AsciiStrCpy (NewFileName, PrivateRoot->FilePath);\r
+    AsciiStrCpyS (NewFileName, Size, PrivateRoot->FilePath);\r
     AsciiFilePtr = NewFileName + AsciiStrLen(NewFileName);\r
     if ((AsciiFilePtr[-1] != '/') && (NewFileInfo->FileName[0] != '/')) {\r
       // make sure there is a / between Root FilePath and NewFileInfo Filename\r
@@ -1312,7 +1340,11 @@ PosixFileSetInfo (
         goto Done;\r
       }\r
 \r
-      AsciiStrCpy (PrivateFile->FileName, NewFileName);\r
+      AsciiStrCpyS (\r
+        PrivateFile->FileName,\r
+        AsciiStrSize (NewFileName),\r
+        NewFileName\r
+        );\r
     } else {\r
       Status    = EFI_DEVICE_ERROR;\r
       goto Done;\r
@@ -1493,7 +1525,11 @@ PosixFileSystmeThunkOpen (
     free (Private);\r
     return EFI_OUT_OF_RESOURCES;\r
   }\r
-  StrCpy (Private->VolumeLabel, L"EFI_EMULATED");\r
+  StrCpyS (\r
+    Private->VolumeLabel,\r
+    StrSize (L"EFI_EMULATED") / sizeof (CHAR16),\r
+    L"EFI_EMULATED"\r
+    );\r
 \r
   Private->Signature = EMU_SIMPLE_FILE_SYSTEM_PRIVATE_SIGNATURE;\r
   Private->Thunk     = This;\r
index 9d03c1301148139449289f68f1d290488865a73b..5325a0e35bf968045401bfdd2fd68bafe75dfa47 100644 (file)
@@ -1,6 +1,6 @@
 /*++ @file\r
 \r
-Copyright (c) 2004 - 2011, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2004 - 2019, Intel Corporation. All rights reserved.<BR>\r
 Portions copyright (c) 2008 - 2011, Apple Inc. All rights reserved.<BR>\r
 \r
 SPDX-License-Identifier: BSD-2-Clause-Patent\r
@@ -957,7 +957,7 @@ X11GraphicsWindowOpen (
   XDefineCursor (Drv->display, Drv->win, XCreateFontCursor (Drv->display, XC_pirate));\r
 \r
   Drv->Title = malloc (StrSize (This->ConfigString));\r
-  UnicodeStrToAsciiStr (This->ConfigString, Drv->Title);\r
+  UnicodeStrToAsciiStrS (This->ConfigString, Drv->Title, StrSize (This->ConfigString));\r
   XStoreName (Drv->display, Drv->win, Drv->Title);\r
 \r
 //  XAutoRepeatOff (Drv->display);\r
index da6595228da7d70fb8fd7f398eb84df1bb7a0e13..aab926889e0ac94d3c8bc72fa5c33fefb0395198 100644 (file)
@@ -1,7 +1,7 @@
 /*++ @file\r
   Support OS native directory access.\r
 \r
-Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>\r
 SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 \r
@@ -205,8 +205,14 @@ WinNtOpenVolume (
     goto Done;\r
   }\r
 \r
-  StrCpy (PrivateFile->FilePath, Private->FilePath);\r
-  StrCpy (PrivateFile->FileName, PrivateFile->FilePath);\r
+  StrCpyS (PrivateFile->FilePath,\r
+    StrSize (Private->FilePath) / sizeof (CHAR16),\r
+    Private->FilePath\r
+    );\r
+  StrCpyS (PrivateFile->FileName,\r
+    StrSize (Private->FilePath) / sizeof (CHAR16),\r
+    PrivateFile->FilePath\r
+    );\r
   PrivateFile->Signature = WIN_NT_EFI_FILE_PRIVATE_SIGNATURE;\r
   PrivateFile->Thunk = Private->Thunk;\r
   PrivateFile->SimpleFileSystem = This;\r
@@ -243,8 +249,8 @@ WinNtOpenVolume (
   if (TempFileName == NULL) {\r
     goto Done;\r
   }\r
-  StrCpy (TempFileName, PrivateFile->FilePath);\r
-  StrCat (TempFileName, L"\\*");\r
+  StrCpyS (TempFileName, Size / sizeof (CHAR16), PrivateFile->FilePath);\r
+  StrCatS (TempFileName, Size / sizeof (CHAR16), L"\\*");\r
 \r
   PrivateFile->LHandle = FindFirstFile (TempFileName, &PrivateFile->FindBuf);\r
   FreePool (TempFileName);\r
@@ -362,7 +368,7 @@ GetNextFileNameToken (
   } else {\r
     Offset = SlashPos - *FileName;\r
     Token = AllocateZeroPool ((Offset + 1) * sizeof (CHAR16));\r
-    StrnCpy (Token, *FileName, Offset);\r
+    StrnCpyS (Token, Offset + 1, *FileName, Offset);\r
     //\r
     // Point *FileName to the next character after L'\'.\r
     //\r
@@ -496,7 +502,7 @@ WinNtFileOpen (
   if (TempFileName == NULL) {\r
     return EFI_OUT_OF_RESOURCES;\r
   }\r
-  StrCpy (TempFileName, FileName);\r
+  StrCpyS (TempFileName, StrSize (FileName) / sizeof (CHAR16), FileName);\r
   FileName = TempFileName;\r
 \r
   if (FileName[StrLen (FileName) - 1] == L'\\') {\r
@@ -548,9 +554,17 @@ WinNtFileOpen (
   }\r
 \r
   if (PrivateFile->IsDirectoryPath) {\r
-    StrCpy (NewPrivateFile->FilePath, PrivateFile->FileName);\r
+    StrCpyS (\r
+      NewPrivateFile->FilePath,\r
+      StrSize (PrivateFile->FileName) / sizeof (CHAR16),\r
+      PrivateFile->FileName\r
+      );\r
   } else {\r
-    StrCpy (NewPrivateFile->FilePath, PrivateFile->FilePath);\r
+    StrCpyS (\r
+      NewPrivateFile->FilePath,\r
+      StrSize (PrivateFile->FileName) / sizeof (CHAR16),\r
+      PrivateFile->FilePath\r
+      );\r
   }\r
 \r
   Size = StrSize (NewPrivateFile->FilePath);\r
@@ -563,17 +577,17 @@ WinNtFileOpen (
   }\r
 \r
   if (*FileName == L'\\') {\r
-    StrCpy (NewPrivateFile->FileName, PrivateRoot->FilePath);\r
-    StrCat (NewPrivateFile->FileName, L"\\");\r
-    StrCat (NewPrivateFile->FileName, FileName + 1);\r
+    StrCpyS (NewPrivateFile->FileName, Size / sizeof (CHAR16), PrivateRoot->FilePath);\r
+    StrCatS (NewPrivateFile->FileName, Size / sizeof (CHAR16), L"\\");\r
+    StrCatS (NewPrivateFile->FileName, Size / sizeof (CHAR16), FileName + 1);\r
   } else {\r
-    StrCpy (NewPrivateFile->FileName, NewPrivateFile->FilePath);\r
+    StrCpyS (NewPrivateFile->FileName, Size / sizeof (CHAR16), NewPrivateFile->FilePath);\r
     if (StrCmp (FileName, L"") != 0) {\r
       //\r
       // In case the filename becomes empty, especially after trimming dots and blanks\r
       //\r
-      StrCat (NewPrivateFile->FileName, L"\\");\r
-      StrCat (NewPrivateFile->FileName, FileName);\r
+      StrCatS (NewPrivateFile->FileName, Size / sizeof (CHAR16), L"\\");\r
+      StrCatS (NewPrivateFile->FileName, Size / sizeof (CHAR16), FileName);\r
     }\r
   }\r
 \r
@@ -657,7 +671,11 @@ WinNtFileOpen (
     goto Done;\r
   }\r
 \r
-  StrCpy (NewPrivateFile->FilePath, NewPrivateFile->FileName);\r
+  StrCpyS (\r
+    NewPrivateFile->FilePath,\r
+    StrSize (NewPrivateFile->FileName) / sizeof (CHAR16),\r
+    NewPrivateFile->FileName\r
+    );\r
   if (TempChar != 0) {\r
     *(RealFileName - 1) = TempChar;\r
   }\r
@@ -715,7 +733,7 @@ WinNtFileOpen (
       goto Done;\r
     }\r
 \r
-    StrCpy (TempFileName, NewPrivateFile->FileName);\r
+    StrCpyS (TempFileName, Size / sizeof (CHAR16), NewPrivateFile->FileName);\r
 \r
     if ((OpenMode & EFI_FILE_MODE_CREATE)) {\r
       //\r
@@ -769,7 +787,7 @@ WinNtFileOpen (
     //\r
     // Find the first file under it\r
     //\r
-    StrCat (TempFileName, L"\\*");\r
+    StrCatS (TempFileName, Size / sizeof (CHAR16), L"\\*");\r
     NewPrivateFile->LHandle = FindFirstFile (TempFileName, &NewPrivateFile->FindBuf);\r
     FreePool (TempFileName);\r
 \r
@@ -1330,8 +1348,8 @@ WinNtFileSetPossition (
       goto Done;\r
     }\r
 \r
-    StrCpy (FileName, PrivateFile->FileName);\r
-    StrCat (FileName, L"\\*");\r
+    StrCpyS (FileName, Size / sizeof (CHAR16), PrivateFile->FileName);\r
+    StrCatS (FileName, Size / sizeof (CHAR16), L"\\*");\r
 \r
     if (PrivateFile->LHandle != INVALID_HANDLE_VALUE) {\r
       FindClose (PrivateFile->LHandle);\r
@@ -1599,7 +1617,11 @@ WinNtFileGetInfo (
       goto Done;\r
     }\r
 \r
-    StrCpy (DriveName, PrivateFile->FilePath);\r
+    StrCpyS (\r
+      DriveName,\r
+      (StrSize (PrivateFile->FilePath) + 1) / sizeof (CHAR16),\r
+      PrivateFile->FilePath\r
+      );\r
     for (Index = 0; DriveName[Index] != 0 && DriveName[Index] != ':'; Index++) {\r
       ;\r
     }\r
@@ -1664,7 +1686,11 @@ WinNtFileGetInfo (
       }\r
     }\r
 \r
-    StrCpy ((CHAR16 *)FileSystemInfoBuffer->VolumeLabel, PrivateRoot->VolumeLabel);\r
+    StrCpyS (\r
+      (CHAR16 *)FileSystemInfoBuffer->VolumeLabel,\r
+      (*BufferSize - SIZE_OF_EFI_FILE_SYSTEM_INFO) / sizeof (CHAR16),\r
+      PrivateRoot->VolumeLabel\r
+      );\r
     *BufferSize = SIZE_OF_EFI_FILE_SYSTEM_INFO + StrSize (PrivateRoot->VolumeLabel);\r
     Status = EFI_SUCCESS;\r
   }\r
@@ -1676,7 +1702,11 @@ WinNtFileGetInfo (
       goto Done;\r
     }\r
 \r
-    StrCpy ((CHAR16 *)Buffer, PrivateRoot->VolumeLabel);\r
+    StrCpyS (\r
+      (CHAR16 *)Buffer,\r
+      *BufferSize / sizeof (CHAR16),\r
+      PrivateRoot->VolumeLabel\r
+      );\r
     *BufferSize = StrSize (PrivateRoot->VolumeLabel);\r
     Status = EFI_SUCCESS;\r
   }\r
@@ -1768,7 +1798,11 @@ WinNtFileSetInfo (
       goto Done;\r
     }\r
 \r
-    StrCpy (PrivateRoot->VolumeLabel, NewFileSystemInfo->VolumeLabel);\r
+    StrCpyS (\r
+      PrivateRoot->VolumeLabel,\r
+      StrSize (NewFileSystemInfo->VolumeLabel) / sizeof (CHAR16),\r
+      NewFileSystemInfo->VolumeLabel\r
+      );\r
 \r
     Status = EFI_SUCCESS;\r
     goto Done;\r
@@ -1783,7 +1817,11 @@ WinNtFileSetInfo (
       goto Done;\r
     }\r
 \r
-    StrCpy (PrivateRoot->VolumeLabel, (CHAR16 *)Buffer);\r
+    StrCpyS (\r
+      PrivateRoot->VolumeLabel,\r
+      StrSize (PrivateRoot->VolumeLabel) / sizeof (CHAR16),\r
+      (CHAR16 *)Buffer\r
+      );\r
 \r
     Status = EFI_SUCCESS;\r
     goto Done;\r
@@ -1852,7 +1890,11 @@ WinNtFileSetInfo (
     goto Done;\r
   }\r
 \r
-  StrCpy (OldFileName, PrivateFile->FileName);\r
+  StrCpyS (\r
+    OldFileName,\r
+    StrSize (PrivateFile->FileName) / sizeof (CHAR16),\r
+    PrivateFile->FileName\r
+    );\r
 \r
   //\r
   // Make full pathname from new filename and rootpath.\r
@@ -1867,9 +1909,9 @@ WinNtFileSetInfo (
       goto Done;\r
     }\r
 \r
-    StrCpy (NewFileName, PrivateRoot->FilePath);\r
-    StrCat (NewFileName, L"\\");\r
-    StrCat (NewFileName, NewFileInfo->FileName + 1);\r
+    StrCpyS (NewFileName, Size / sizeof (CHAR16), PrivateRoot->FilePath);\r
+    StrCatS (NewFileName, Size / sizeof (CHAR16), L"\\");\r
+    StrCatS (NewFileName, Size / sizeof (CHAR16), NewFileInfo->FileName + 1);\r
   } else {\r
     Size = StrSize (PrivateFile->FilePath);\r
     Size += StrSize (L"\\");\r
@@ -1880,9 +1922,9 @@ WinNtFileSetInfo (
       goto Done;\r
     }\r
 \r
-    StrCpy (NewFileName, PrivateFile->FilePath);\r
-    StrCat (NewFileName, L"\\");\r
-    StrCat (NewFileName, NewFileInfo->FileName);\r
+    StrCpyS (NewFileName, Size / sizeof (CHAR16), PrivateFile->FilePath);\r
+    StrCatS (NewFileName, Size / sizeof (CHAR16), L"\\");\r
+    StrCatS (NewFileName, Size / sizeof (CHAR16), NewFileInfo->FileName);\r
   }\r
 \r
   //\r
@@ -1990,13 +2032,13 @@ WinNtFileSetInfo (
         goto Done;\r
       }\r
 \r
-      StrCpy (PrivateFile->FileName, NewFileName);\r
+      StrCpyS (PrivateFile->FileName, StrSize (NewFileName) / sizeof (CHAR16), NewFileName);\r
 \r
       Size = StrSize (NewFileName);\r
       Size += StrSize (L"\\*");\r
       TempFileName = AllocatePool (Size);\r
 \r
-      StrCpy (TempFileName, NewFileName);\r
+      StrCpyS (TempFileName, Size / sizeof (CHAR16), NewFileName);\r
 \r
       if (!PrivateFile->IsDirectoryPath) {\r
         PrivateFile->LHandle = CreateFile (\r
@@ -2029,7 +2071,7 @@ WinNtFileSetInfo (
           NULL\r
         );\r
 \r
-        StrCat (TempFileName, L"\\*");\r
+        StrCatS (TempFileName, Size / sizeof (CHAR16), L"\\*");\r
         PrivateFile->LHandle = FindFirstFile (TempFileName, &FindBuf);\r
 \r
         FreePool (TempFileName);\r
@@ -2048,7 +2090,7 @@ WinNtFileSetInfo (
       Size += StrSize (L"\\*");\r
       TempFileName = AllocatePool (Size);\r
 \r
-      StrCpy (TempFileName, OldFileName);\r
+      StrCpyS (TempFileName, Size / sizeof (CHAR16), OldFileName);\r
 \r
       if (!PrivateFile->IsDirectoryPath) {\r
         PrivateFile->LHandle = CreateFile (\r
@@ -2071,7 +2113,7 @@ WinNtFileSetInfo (
           NULL\r
         );\r
 \r
-        StrCat (TempFileName, L"\\*");\r
+        StrCatS (TempFileName, Size / sizeof (CHAR16), L"\\*");\r
         PrivateFile->LHandle = FindFirstFile (TempFileName, &FindBuf);\r
       }\r
 \r