* [Patch V3 3/4] EmulatorPkg: Add -D DISABLE_NEW_DEPRECATED_INTERFACES
2019-08-09 22:44 [Patch V3 0/4] EmulatorPkg: Fix VS20xx IA32 boot and simplify build config Michael D Kinney
2019-08-09 22:44 ` [Patch V3 1/4] EmulatorPkg: Fix VS20xx IA32 boot failure Michael D Kinney
2019-08-09 22:44 ` [Patch V3 2/4] EmulatorPkg: Remove UNIX_SEC_BUILD/WIN_SEC_BUILD Michael D Kinney
@ 2019-08-09 22:44 ` Michael D Kinney
2019-08-09 22:44 ` [Patch V3 4/4] EmulatorPkg: Add support for NOOPT target Michael D Kinney
2019-08-09 23:08 ` [Patch V3 0/4] EmulatorPkg: Fix VS20xx IA32 boot and simplify build config Jordan Justen
4 siblings, 0 replies; 8+ messages in thread
From: Michael D Kinney @ 2019-08-09 22:44 UTC (permalink / raw)
To: devel; +Cc: Jordan Justen, Andrew Fish, Ray Ni, Hao A Wu
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>
---
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 | 10 +-
EmulatorPkg/Unix/Host/PosixFileSystem.c | 80 ++++++++----
EmulatorPkg/Unix/Host/X11GraphicsWindow.c | 4 +-
EmulatorPkg/Win/Host/WinFileSystem.c | 116 ++++++++++++------
9 files changed, 172 insertions(+), 76 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..8d0eb0d197 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
@@ -242,7 +242,7 @@ EmuSnpStart (
//
// Associate our interface with this BPF file descriptor.
//
- AsciiStrCpy (BoundIf.ifr_name, Private->InterfaceName);
+ AsciiStrCpyS (BoundIf.ifr_name, sizeof (BoundIf.ifr_name), Private->InterfaceName);
if (ioctl (Private->BpfFd, BIOCSETIF, &BoundIf) < 0) {
goto DeviceErrorExit;
}
@@ -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..0a618abcd8 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,28 +1205,34 @@ 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++ ='/';
} else {
- NewFileName = malloc (AsciiStrLen (PrivateFile->FileName) + 2 + StrLen (NewFileInfo->FileName) + 1);
+ Size = AsciiStrLen (PrivateFile->FileName) + 2 + 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);
if ((AsciiFilePtr[-1] != '/') && (NewFileInfo->FileName[0] != '/')) {
// make sure there is a / between Root FilePath and NewFileInfo Filename
@@ -1312,7 +1340,11 @@ PosixFileSetInfo (
goto Done;
}
- AsciiStrCpy (PrivateFile->FileName, NewFileName);
+ AsciiStrCpyS (
+ PrivateFile->FileName,
+ AsciiStrSize (NewFileName),
+ NewFileName
+ );
} else {
Status = EFI_DEVICE_ERROR;
goto Done;
@@ -1493,7 +1525,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
^ permalink raw reply related [flat|nested] 8+ messages in thread