public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Michael D Kinney" <michael.d.kinney@intel.com>
To: devel@edk2.groups.io
Cc: Jordan Justen <jordan.l.justen@intel.com>,
	Andrew Fish <afish@apple.com>, Ray Ni <ray.ni@intel.com>
Subject: [Patch V2 3/3] EmulatorPkg: Add -D DISABLE_NEW_DEPRECATED_INTERFACES
Date: Wed,  7 Aug 2019 19:25:56 -0700	[thread overview]
Message-ID: <20190808022556.18828-4-michael.d.kinney@intel.com> (raw)
In-Reply-To: <20190808022556.18828-1-michael.d.kinney@intel.com>

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>
---
 EmulatorPkg/EmuBusDriverDxe/EmuBusDriverDxe.c |   9 +-
 EmulatorPkg/EmulatorPkg.dsc                   |   6 +-
 EmulatorPkg/FlashMapPei/FlashMapPei.c         |   8 +-
 EmulatorPkg/Library/SmbiosLib/SmbiosLib.c     |   4 +-
 .../ThunkProtocolList/ThunkProtocolList.c     |  11 +-
 EmulatorPkg/Unix/Host/BerkeleyPacketFilter.c  |   8 +-
 EmulatorPkg/Unix/Host/PosixFileSystem.c       |  77 ++++++++----
 EmulatorPkg/Unix/Host/X11GraphicsWindow.c     |   4 +-
 EmulatorPkg/Win/Host/WinFileSystem.c          | 116 ++++++++++++------
 9 files changed, 169 insertions(+), 74 deletions(-)

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


  parent reply	other threads:[~2019-08-08  2:26 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-08  2:25 [Patch V2 0/3] EmulatorPkg: Fix VS20xx IA32 boot and simplify build config Michael D Kinney
2019-08-08  2:25 ` [Patch V2 1/3] EmulatorPkg: Fix VS20xx IA32 boot failure Michael D Kinney
2019-08-08  5:54   ` [edk2-devel] " Wu, Hao A
2019-08-08  2:25 ` [Patch V2 2/3] EmulatorPkg: Remove UNIX_SEC_BUILD/WIN_SEC_BUILD Michael D Kinney
2019-08-08  5:55   ` [edk2-devel] " Wu, Hao A
2019-08-08  2:25 ` Michael D Kinney [this message]
2019-08-08  5:56   ` [edk2-devel] [Patch V2 3/3] EmulatorPkg: Add -D DISABLE_NEW_DEPRECATED_INTERFACES Wu, Hao A
2019-08-09 21:31     ` Michael D Kinney

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190808022556.18828-4-michael.d.kinney@intel.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox