From: "Michael D Kinney" <michael.d.kinney@intel.com>
To: "Wu, Hao A" <hao.a.wu@intel.com>,
"devel@edk2.groups.io" <devel@edk2.groups.io>,
"Kinney, Michael D" <michael.d.kinney@intel.com>
Cc: "Justen, Jordan L" <jordan.l.justen@intel.com>,
Andrew Fish <afish@apple.com>, "Ni, Ray" <ray.ni@intel.com>
Subject: Re: [edk2-devel] [Patch V2 3/3] EmulatorPkg: Add -D DISABLE_NEW_DEPRECATED_INTERFACES
Date: Fri, 9 Aug 2019 21:31:48 +0000 [thread overview]
Message-ID: <E92EE9817A31E24EB0585FDF735412F5B9D865A4@ORSMSX113.amr.corp.intel.com> (raw)
In-Reply-To: <B80AF82E9BFB8E4FBD8C89DA810C6A093C91765A@SHSMSX104.ccr.corp.intel.com>
> -----Original Message-----
> From: Wu, Hao A
> Sent: Wednesday, August 7, 2019 10:56 PM
> To: devel@edk2.groups.io; Kinney, Michael D
> <michael.d.kinney@intel.com>
> Cc: Justen, Jordan L <jordan.l.justen@intel.com>; Andrew
> Fish <afish@apple.com>; Ni, Ray <ray.ni@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.wu@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.justen@intel.com>
> > Cc: Andrew Fish <afish@apple.com>
> > Cc: Ray Ni <ray.ni@intel.com>
> > Signed-off-by: Michael D Kinney
> <michael.d.kinney@intel.com>
> > ---
> > EmulatorPkg/EmuBusDriverDxe/EmuBusDriverDxe.c | 9
> +-
> > EmulatorPkg/EmulatorPkg.dsc | 6
> +-
> > EmulatorPkg/FlashMapPei/FlashMapPei.c | 8
> +-
> > EmulatorPkg/Library/SmbiosLib/SmbiosLib.c | 4
> +-
> > .../ThunkProtocolList/ThunkProtocolList.c | 11
> +-
> > EmulatorPkg/Unix/Host/BerkeleyPacketFilter.c | 8
> +-
> > EmulatorPkg/Unix/Host/PosixFileSystem.c | 77
> ++++++++----
> > EmulatorPkg/Unix/Host/X11GraphicsWindow.c | 4
> +-
> > EmulatorPkg/Win/Host/WinFileSystem.c | 116
> ++++++++++++------
> > 9 files changed, 169 insertions(+), 74 deletions(-)
> >
> > diff --git
> a/EmulatorPkg/EmuBusDriverDxe/EmuBusDriverDxe.c
> > b/EmulatorPkg/EmuBusDriverDxe/EmuBusDriverDxe.c
> > index 0bf6e723a1..d8380f2be9 100644
> > --- a/EmulatorPkg/EmuBusDriverDxe/EmuBusDriverDxe.c
> > +++ b/EmulatorPkg/EmuBusDriverDxe/EmuBusDriverDxe.c
> > @@ -1,7 +1,7 @@
> > /** @file
> > Emu Bus driver
> >
> > -Copyright (c) 2006 - 2011, Intel Corporation. All
> rights
> > reserved.<BR>
> > +Copyright (c) 2006 - 2019, Intel Corporation. All
> rights
> > +reserved.<BR>
> > Portions copyright (c) 2011, Apple Inc. All rights
> reserved.
> > SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > @@ -256,7 +256,12 @@ EmuBusDriverBindingStart (
> >
> > EmuDevice->ControllerNameTable = NULL;
> >
> > - StrnCpy (ComponentName, EmuIoThunk-
> >ConfigString, sizeof
> > (ComponentName)/sizeof (CHAR16));
> > + StrnCpyS (
> > + ComponentName,
> > + sizeof (ComponentName) / sizeof (CHAR16),
> > + EmuIoThunk->ConfigString,
> > + sizeof (ComponentName) / sizeof (CHAR16)
> > + );
> >
> > EmuDevice->DevicePath = EmuBusCreateDevicePath
> (
> > ParentDevicePath,
> diff --git
> > a/EmulatorPkg/EmulatorPkg.dsc
> b/EmulatorPkg/EmulatorPkg.dsc index
> > 153da464f1..529adfe1fa 100644
> > --- a/EmulatorPkg/EmulatorPkg.dsc
> > +++ b/EmulatorPkg/EmulatorPkg.dsc
> > @@ -408,10 +408,14 @@ [Components]
> > !include NetworkPkg/Network.dsc.inc
> >
> > [BuildOptions]
> > + #
> > + # Disable deprecated APIs.
> > + #
> > + *_*_*_CC_FLAGS = -D
> DISABLE_NEW_DEPRECATED_INTERFACES
> > +
> > MSFT:DEBUG_*_*_CC_FLAGS = /Od /Oy-
> > MSFT:NOOPT_*_*_CC_FLAGS = /Od /Oy-
> >
> > MSFT:*_*_*_DLINK_FLAGS = /ALIGN:4096
> /FILEALIGN:4096
> > /SUBSYSTEM:CONSOLE
> > MSFT:DEBUG_*_*_DLINK_FLAGS =
> > /EXPORT:InitializeDriver=$(IMAGE_ENTRY_POINT)
> /BASE:0x10000
> > MSFT:NOOPT_*_*_DLINK_FLAGS =
> > /EXPORT:InitializeDriver=$(IMAGE_ENTRY_POINT)
> /BASE:0x10000
> > -
> > diff --git a/EmulatorPkg/FlashMapPei/FlashMapPei.c
> > b/EmulatorPkg/FlashMapPei/FlashMapPei.c
> > index 2a468e43ac..7744065dd6 100644
> > --- a/EmulatorPkg/FlashMapPei/FlashMapPei.c
> > +++ b/EmulatorPkg/FlashMapPei/FlashMapPei.c
> > @@ -1,7 +1,7 @@
> > /*++ @file
> > PEIM to build GUIDed HOBs for platform specific
> flash map
> >
> > -Copyright (c) 2006 - 2010, Intel Corporation. All
> rights
> > reserved.<BR>
> > +Copyright (c) 2006 - 2019, Intel Corporation. All
> rights
> > +reserved.<BR>
> > Portions copyright (c) 2011, Apple Inc. All rights
> reserved.
> > SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > @@ -69,9 +69,9 @@ Returns:
> > return Status;
> > }
> >
> > - PcdSet64 (PcdFlashNvStorageVariableBase64, PcdGet64
> > (PcdEmuFlashNvStorageVariableBase) + FdFixUp);
> > - PcdSet64 (PcdFlashNvStorageFtwWorkingBase64,
> PcdGet64
> > (PcdEmuFlashNvStorageFtwWorkingBase) + FdFixUp);
> > - PcdSet64 (PcdFlashNvStorageFtwSpareBase64, PcdGet64
> > (PcdEmuFlashNvStorageFtwSpareBase) + FdFixUp);
> > + PcdSet64S (PcdFlashNvStorageVariableBase64,
> PcdGet64
> > (PcdEmuFlashNvStorageVariableBase) + FdFixUp);
> > + PcdSet64S (PcdFlashNvStorageFtwWorkingBase64,
> PcdGet64
> > (PcdEmuFlashNvStorageFtwWorkingBase) + FdFixUp);
> > + PcdSet64S (PcdFlashNvStorageFtwSpareBase64,
> PcdGet64
> > (PcdEmuFlashNvStorageFtwSpareBase) + FdFixUp);
> >
> > return EFI_SUCCESS;
> > }
> > diff --git a/EmulatorPkg/Library/SmbiosLib/SmbiosLib.c
> > b/EmulatorPkg/Library/SmbiosLib/SmbiosLib.c
> > index 331122e200..3acbb23644 100644
> > --- a/EmulatorPkg/Library/SmbiosLib/SmbiosLib.c
> > +++ b/EmulatorPkg/Library/SmbiosLib/SmbiosLib.c
> > @@ -4,7 +4,7 @@
> >
> >
> > Copyright (c) 2012, Apple Inc. All rights reserved.
> > -Portitions Copyright (c) 2006 - 2012, Intel
> Corporation. All rights
> > reserved.<BR>
> > +Portitions Copyright (c) 2006 - 2019, Intel
> Corporation. All rights
> > reserved.<BR>
> > SPDX-License-Identifier: BSD-2-Clause-Patent
> >
> > **/
> > @@ -223,7 +223,7 @@ SmbiosLibUpdateUnicodeString (
> > if (Ascii == NULL) {
> > return EFI_OUT_OF_RESOURCES;
> > }
> > - UnicodeStrToAsciiStr (String, Ascii);
> > + UnicodeStrToAsciiStrS (String, Ascii, StrSize
> (String));
> >
> > StringIndex = StringNumber;
> > Status = gSmbios->UpdateString (gSmbios,
> &SmbiosHandle,
> > &StringIndex, Ascii); diff --git
> >
> a/EmulatorPkg/Library/ThunkProtocolList/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
> >
> >
> >
prev parent reply other threads:[~2019-08-09 21:31 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-08 2:25 [Patch V2 0/3] EmulatorPkg: Fix VS20xx IA32 boot and simplify build config Michael D Kinney
2019-08-08 2:25 ` [Patch V2 1/3] EmulatorPkg: Fix VS20xx IA32 boot failure Michael D Kinney
2019-08-08 5:54 ` [edk2-devel] " Wu, Hao A
2019-08-08 2:25 ` [Patch V2 2/3] EmulatorPkg: Remove UNIX_SEC_BUILD/WIN_SEC_BUILD Michael D Kinney
2019-08-08 5:55 ` [edk2-devel] " Wu, Hao A
2019-08-08 2:25 ` [Patch V2 3/3] EmulatorPkg: Add -D DISABLE_NEW_DEPRECATED_INTERFACES Michael D Kinney
2019-08-08 5:56 ` [edk2-devel] " Wu, Hao A
2019-08-09 21:31 ` Michael D Kinney [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=E92EE9817A31E24EB0585FDF735412F5B9D865A4@ORSMSX113.amr.corp.intel.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox