From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 134.134.136.24, mailfrom: michael.d.kinney@intel.com) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by groups.io with SMTP; Fri, 09 Aug 2019 14:31:50 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 09 Aug 2019 14:31:49 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,366,1559545200"; d="scan'208";a="326742982" Received: from orsmsx102.amr.corp.intel.com ([10.22.225.129]) by orsmga004.jf.intel.com with ESMTP; 09 Aug 2019 14:31:50 -0700 Received: from orsmsx155.amr.corp.intel.com (10.22.240.21) by ORSMSX102.amr.corp.intel.com (10.22.225.129) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 9 Aug 2019 14:31:49 -0700 Received: from orsmsx113.amr.corp.intel.com ([169.254.9.177]) by ORSMSX155.amr.corp.intel.com ([169.254.7.26]) with mapi id 14.03.0439.000; Fri, 9 Aug 2019 14:31:49 -0700 From: "Michael D Kinney" To: "Wu, Hao A" , "devel@edk2.groups.io" , "Kinney, Michael D" CC: "Justen, Jordan L" , Andrew Fish , "Ni, Ray" Subject: Re: [edk2-devel] [Patch V2 3/3] EmulatorPkg: Add -D DISABLE_NEW_DEPRECATED_INTERFACES Thread-Topic: [edk2-devel] [Patch V2 3/3] EmulatorPkg: Add -D DISABLE_NEW_DEPRECATED_INTERFACES Thread-Index: AQHVTZCqu9w9B+WziUu5BV2QiQba86bxNiiAgAIh3eA= Date: Fri, 9 Aug 2019 21:31:48 +0000 Message-ID: References: <20190808022556.18828-1-michael.d.kinney@intel.com> <20190808022556.18828-4-michael.d.kinney@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action x-originating-ip: [10.22.254.138] MIME-Version: 1.0 Return-Path: michael.d.kinney@intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable > -----Original Message----- > From: Wu, Hao A > Sent: Wednesday, August 7, 2019 10:56 PM > To: devel@edk2.groups.io; Kinney, Michael D > > Cc: Justen, Jordan L ; Andrew > Fish ; Ni, Ray > Subject: RE: [edk2-devel] [Patch V2 3/3] EmulatorPkg: > Add -D DISABLE_NEW_DEPRECATED_INTERFACES >=20 > Hello Mike, >=20 > With one typo mentioned below addressed, > Reviewed-by: Hao A Wu >=20 >=20 > > -----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=3D162 > > > > 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 > > Cc: Andrew Fish > > Cc: Ray Ni > > Signed-off-by: Michael D Kinney > > > --- > > 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.
> > +Copyright (c) 2006 - 2019, Intel Corporation. All > rights > > +reserved.
> > Portions copyright (c) 2011, Apple Inc. All rights > reserved. > > SPDX-License-Identifier: BSD-2-Clause-Patent > > > > @@ -256,7 +256,12 @@ EmuBusDriverBindingStart ( > > > > EmuDevice->ControllerNameTable =3D NULL; > > > > - StrnCpy (ComponentName, EmuIoThunk- > >ConfigString, sizeof > > (ComponentName)/sizeof (CHAR16)); > > + StrnCpyS ( > > + ComponentName, > > + sizeof (ComponentName) / sizeof (CHAR16), > > + EmuIoThunk->ConfigString, > > + sizeof (ComponentName) / sizeof (CHAR16) > > + ); > > > > EmuDevice->DevicePath =3D 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 =3D -D > DISABLE_NEW_DEPRECATED_INTERFACES > > + > > MSFT:DEBUG_*_*_CC_FLAGS =3D /Od /Oy- > > MSFT:NOOPT_*_*_CC_FLAGS =3D /Od /Oy- > > > > MSFT:*_*_*_DLINK_FLAGS =3D /ALIGN:4096 > /FILEALIGN:4096 > > /SUBSYSTEM:CONSOLE > > MSFT:DEBUG_*_*_DLINK_FLAGS =3D > > /EXPORT:InitializeDriver=3D$(IMAGE_ENTRY_POINT) > /BASE:0x10000 > > MSFT:NOOPT_*_*_DLINK_FLAGS =3D > > /EXPORT:InitializeDriver=3D$(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.
> > +Copyright (c) 2006 - 2019, Intel Corporation. All > rights > > +reserved.
> > 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.
> > +Portitions Copyright (c) 2006 - 2019, Intel > Corporation. All rights > > reserved.
> > SPDX-License-Identifier: BSD-2-Clause-Patent > > > > **/ > > @@ -223,7 +223,7 @@ SmbiosLibUpdateUnicodeString ( > > if (Ascii =3D=3D NULL) { > > return EFI_OUT_OF_RESOURCES; > > } > > - UnicodeStrToAsciiStr (String, Ascii); > > + UnicodeStrToAsciiStrS (String, Ascii, StrSize > (String)); > > > > StringIndex =3D StringNumber; > > Status =3D 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.
> > - Copyright (c) 2011 - 2018, Intel Corporation. All > rights > > reserved.
> > + Copyright (c) 2011 - 2019, Intel Corporation. All > rights > > + reserved.
> > > > 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 =3D 0; > > - StartString =3D AllocatePool (StrSize > (ConfigString)); > > - StrCpy (StartString, ConfigString); > > + Size =3D StrSize (ConfigString); > > + StartString =3D AllocatePool (Size); > > + if (StartString =3D=3D NULL) { > > + return EFI_OUT_OF_RESOURCES; > > + } > > + StrCpyS (StartString, Size / sizeof (CHAR16), > ConfigString); > > while (*StartString !=3D '\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.
> > +Copyright (c) 2004 - 2019, Intel Corporation. All > rights > > +reserved.
> > 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 =3D EFI_NOT_FOUND; > > If =3D 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 =3D=3D NULL) { > > goto Done; > > } > > - AsciiStrCpy (PrivateFile->FileName, Private- > >FilePath); > > + AsciiStrCpyS ( > > + PrivateFile->FileName, > > + AsciiStrSize (Private->FilePath), > > + Private->FilePath > > + ); > > > > PrivateFile->Signature =3D > EMU_EFI_FILE_PRIVATE_SIGNATURE; > > PrivateFile->Thunk =3D Private->Thunk; > > @@ -377,7 +381,7 @@ PosixFileOpen ( > > EFI_FILE_INFO *Info; > > struct stat finfo; > > int res; > > - > > + UINTN Size; > > > > PrivateFile =3D > EMU_EFI_FILE_PRIVATE_DATA_FROM_THIS (This); > > PrivateRoot =3D > 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 =3D malloc (AsciiStrSize > > (PrivateFile->FileName) + > > 1 + StrLen (FileName) + 1); > > + Size =3D AsciiStrSize (PrivateFile->FileName) + 1 + > StrLen (FileName) > > + + 1; NewPrivateFile->FileName =3D malloc (Size); > > if (NewPrivateFile->FileName =3D=3D NULL) { > > goto Done; > > } > > > > if (*FileName =3D=3D L'\\') { > > - AsciiStrCpy (NewPrivateFile->FileName, > PrivateRoot->FilePath); > > + AsciiStrCpyS (NewPrivateFile->FileName, Size, > > + PrivateRoot->FilePath); > > // Skip first '\'. > > Src =3D FileName + 1; > > } else { > > - AsciiStrCpy (NewPrivateFile->FileName, > PrivateFile->FileName); > > + AsciiStrCpyS (NewPrivateFile->FileName, Size, > > + PrivateFile->FileName); > > Src =3D FileName; > > } > > Dst =3D NewPrivateFile->FileName + AsciiStrLen > > (NewPrivateFile->FileName); @@ -748,7 +753,7 @@ > PosixFileRead ( > > UINTN NameSize; > > UINTN ResultSize; > > CHAR8 *FullFileName; > > - > > + UINTN FullFileNameSize; > > > > PrivateFile =3D EMU_EFI_FILE_PRIVATE_DATA_FROM_THIS > (This); > > > > @@ -798,15 +803,16 @@ PosixFileRead ( > > > > *BufferSize =3D ResultSize; > > > > - FullFileName =3D malloc (AsciiStrLen(PrivateFile- > >FileName) + 1 + > > NameSize); > > + FullFileNameSize =3D AsciiStrLen(PrivateFile- > >FileName) + 1 + > > + NameSize; FullFileName =3D malloc (FullFileNameSize); > > if (FullFileName =3D=3D NULL) { > > Status =3D 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 =3D UnixSimpleFileSystemFileInfo ( > > PrivateFile, > > FullFileName, > > @@ -1017,7 +1023,11 @@ PosixFileGetInfo ( > > FileSystemInfoBuffer->BlockSize =3D 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 =3D 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 =3D StrSize (PrivateRoot->VolumeLabel); > > > > } > > @@ -1082,7 +1096,7 @@ PosixFileSetInfo ( > > CHAR16 *UnicodeFilePtr; > > int UnixStatus; > > struct utimbuf Utime; > > - > > + UINTN Size; > > > > PrivateFile =3D EMU_EFI_FILE_PRIVATE_DATA_FROM_THIS > (This); > > PrivateRoot =3D > 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 =3D 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 =3D 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] =3D=3D '\\') { > > - NewFileName =3D malloc (AsciiStrLen (PrivateRoot- > >FilePath) + 1 + StrLen > > (NewFileInfo->FileName) + 1); > > + Size =3D AsciiStrLen (PrivateRoot->FilePath) + 1 + > StrLen > > + (NewFileInfo- > > >FileName) + 1; > > + NewFileName =3D malloc (Size); > > if (NewFileName =3D=3D NULL) { > > goto Done; > > } > > > > - AsciiStrCpy (NewFileName, PrivateRoot->FilePath); > > + AsciiStrCpyS (NewFileName, Size, PrivateRoot- > >FilePath); > > AsciiFilePtr =3D NewFileName + > AsciiStrLen(NewFileName); > > UnicodeFilePtr =3D NewFileInfo->FileName + 1; > > *AsciiFilePtr++ =3D'/'; > > @@ -1204,7 +1231,7 @@ PosixFileSetInfo ( > > goto Done; > > } > > > > - AsciiStrCpy (NewFileName, PrivateRoot->FilePath); > > + AsciiStrCpyS (NewFileName, Size, PrivateRoot- > >FilePath); >=20 >=20 > I think we cannot directly use 'Size' here. >=20 > The 'Size' is valid for the "if (NewFileInfo- > >FileName[0] =3D=3D '\\') {...}" > chunk, but its value is not right for the "else {...}" > block. >=20 > 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 >=20 >=20 > > AsciiFilePtr =3D NewFileName + > AsciiStrLen(NewFileName); > > if ((AsciiFilePtr[-1] !=3D '/') && (NewFileInfo- > >FileName[0] !=3D '/')) { > > // 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 =3D 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 =3D > EMU_SIMPLE_FILE_SYSTEM_PRIVATE_SIGNATURE; > > Private->Thunk =3D 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.
> > +Copyright (c) 2004 - 2019, Intel Corporation. All > rights > > +reserved.
> > Portions copyright (c) 2008 - 2011, Apple Inc. All > rights > > reserved.
> > > > SPDX-License-Identifier: BSD-2-Clause-Patent @@ - > 957,7 +957,7 @@ > > X11GraphicsWindowOpen ( > > XDefineCursor (Drv->display, Drv->win, > XCreateFontCursor > > (Drv->display, XC_pirate)); > > > > Drv->Title =3D 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.
> > +Copyright (c) 2006 - 2019, Intel Corporation. All > rights > > +reserved.
> > 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 =3D > WIN_NT_EFI_FILE_PRIVATE_SIGNATURE; > > PrivateFile->Thunk =3D Private->Thunk; > > PrivateFile->SimpleFileSystem =3D This; @@ -243,8 > +249,8 @@ > > WinNtOpenVolume ( > > if (TempFileName =3D=3D 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 =3D FindFirstFile (TempFileName, > &PrivateFile->FindBuf); > > FreePool (TempFileName); > > @@ -362,7 +368,7 @@ GetNextFileNameToken ( > > } else { > > Offset =3D SlashPos - *FileName; > > Token =3D 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 =3D=3D NULL) { > > return EFI_OUT_OF_RESOURCES; > > } > > - StrCpy (TempFileName, FileName); > > + StrCpyS (TempFileName, StrSize (FileName) / sizeof > (CHAR16), > > + FileName); > > FileName =3D TempFileName; > > > > if (FileName[StrLen (FileName) - 1] =3D=3D 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 =3D StrSize (NewPrivateFile->FilePath); @@ - > 563,17 +577,17 @@ > > WinNtFileOpen ( > > } > > > > if (*FileName =3D=3D 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"") !=3D 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 !=3D 0) { > > *(RealFileName - 1) =3D 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 =3D 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 !=3D 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 =3D 0; DriveName[Index] !=3D 0 && > DriveName[Index] !=3D ':'; > > 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 =3D SIZE_OF_EFI_FILE_SYSTEM_INFO + > StrSize > > (PrivateRoot- > > >VolumeLabel); > > Status =3D EFI_SUCCESS; > > } > > @@ -1676,7 +1702,11 @@ WinNtFileGetInfo ( > > goto Done; > > } > > > > - StrCpy ((CHAR16 *)Buffer, PrivateRoot- > >VolumeLabel); > > + StrCpyS ( > > + (CHAR16 *)Buffer, > > + *BufferSize / sizeof (CHAR16), > > + PrivateRoot->VolumeLabel > > + ); > > *BufferSize =3D StrSize (PrivateRoot->VolumeLabel); > > Status =3D 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 =3D 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 =3D 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 =3D StrSize (PrivateFile->FilePath); > > Size +=3D 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 =3D StrSize (NewFileName); > > Size +=3D StrSize (L"\\*"); > > TempFileName =3D AllocatePool (Size); > > > > - StrCpy (TempFileName, NewFileName); > > + StrCpyS (TempFileName, Size / sizeof (CHAR16), > NewFileName); > > > > if (!PrivateFile->IsDirectoryPath) { > > PrivateFile->LHandle =3D CreateFile ( @@ - > 2029,7 +2071,7 @@ > > WinNtFileSetInfo ( > > NULL > > ); > > > > - StrCat (TempFileName, L"\\*"); > > + StrCatS (TempFileName, Size / sizeof > (CHAR16), L"\\*"); > > PrivateFile->LHandle =3D FindFirstFile > (TempFileName, > > &FindBuf); > > > > FreePool (TempFileName); > > @@ -2048,7 +2090,7 @@ WinNtFileSetInfo ( > > Size +=3D StrSize (L"\\*"); > > TempFileName =3D AllocatePool (Size); > > > > - StrCpy (TempFileName, OldFileName); > > + StrCpyS (TempFileName, Size / sizeof (CHAR16), > OldFileName); > > > > if (!PrivateFile->IsDirectoryPath) { > > PrivateFile->LHandle =3D CreateFile ( @@ - > 2071,7 +2113,7 @@ > > WinNtFileSetInfo ( > > NULL > > ); > > > > - StrCat (TempFileName, L"\\*"); > > + StrCatS (TempFileName, Size / sizeof > (CHAR16), L"\\*"); > > PrivateFile->LHandle =3D FindFirstFile > (TempFileName, &FindBuf); > > } > > > > -- > > 2.21.0.windows.1 > > > > > >=20