Hello Mike, With one typo mentioned below addressed, Reviewed-by: Hao A Wu <hao.a...@intel.com>
> -----Original Message----- > From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of > Michael D Kinney > Sent: Thursday, August 08, 2019 10:26 AM > To: devel@edk2.groups.io > Cc: Justen, Jordan L; Andrew Fish; Ni, Ray > Subject: [edk2-devel] [Patch V2 3/3] EmulatorPkg: Add -D > DISABLE_NEW_DEPRECATED_INTERFACES > > 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.jus...@intel.com> > Cc: Andrew Fish <af...@apple.com> > Cc: Ray Ni <ray...@intel.com> > Signed-off-by: Michael D Kinney <michael.d.kin...@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); I think we cannot directly use 'Size' here. The 'Size' is valid for the "if (NewFileInfo->FileName[0] == '\\') {...}" chunk, but its value is not right for the "else {...}" block. Best Regards, Hao Wu > 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 > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#45119): https://edk2.groups.io/g/devel/message/45119 Mute This Topic: https://groups.io/mt/32794936/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-