> -----Original Message----- > From: Wu, Hao A > Sent: Wednesday, August 7, 2019 10:56 PM > To: devel@edk2.groups.io; Kinney, Michael D > <michael.d.kin...@intel.com> > Cc: Justen, Jordan L <jordan.l.jus...@intel.com>; Andrew > Fish <af...@apple.com>; Ni, Ray <ray...@intel.com> > Subject: RE: [edk2-devel] [Patch V2 3/3] EmulatorPkg: > Add -D DISABLE_NEW_DEPRECATED_INTERFACES > > 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/ThunkProtocolLis > t.c > > > b/EmulatorPkg/Library/ThunkProtocolList/ThunkProtocolLis > t.c > > index b7aacc851c..3a7b6d1ceb 100644 > > --- > a/EmulatorPkg/Library/ThunkProtocolList/ThunkProtocolLis > t.c > > +++ > b/EmulatorPkg/Library/ThunkProtocolList/ThunkProtocolLis > t.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
Thanks for catching this case. I have updated code to compute Size variable in both the 'if' and 'else' clauses. Best regards, Mike > > > > 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 (#45293): https://edk2.groups.io/g/devel/message/45293 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] -=-=-=-=-=-=-=-=-=-=-=-