Are you happy to add your "Reviewed-By" for this patch?
If yes do you want me to commit it? Or you are happy to do it?

Thanks,
Olivier

> -----Original Message-----
> From: Gao, Liming [mailto:liming....@intel.com]
> Sent: 20 August 2014 16:23
> To: Olivier Martin; edk2-devel@lists.sourceforge.net; Kinney, Michael D
> Subject: RE: [edk2] [PATCH v3 1/3] MdePkg: Introduced BaseStackCheckLib
> 
> Oliver:
>   Sorry for late response. Library can't use FixedPcdGet(), because it
> may be linked to the different drivers those may configure this PCD
> with the different value. That may be the reason you don't do it
> before.
>   Because this value is the recommended constant, it should be fine to
> hard code it first without PCD.
> 
> Thanks
> Liming
> -----Original Message-----
> From: Olivier Martin [mailto:olivier.mar...@arm.com]
> Sent: Wednesday, August 20, 2014 5:47 PM
> To: edk2-devel@lists.sourceforge.net; Kinney, Michael D; Gao, Liming
> Subject: RE: [edk2] [PATCH v3 1/3] MdePkg: Introduced BaseStackCheckLib
> 
> Any feedback?
> Thanks,
> Olivier
> 
> > -----Original Message-----
> > From: Olivier Martin [mailto:olivier.mar...@arm.com]
> > Sent: 06 August 2014 15:49
> > To: edk2-devel@lists.sourceforge.net; Kinney, Michael D; 'Gao,
> Liming'
> > Subject: Re: [edk2] [PATCH v3 1/3] MdePkg: Introduced
> > BaseStackCheckLib
> >
> > I addressed your comment 1. into my local patch.
> >
> > But for comment 2., I had initially added BaseStackLib to MdePkg.dsc.
> > But it was not building as the FixedPcd was not defined:
> > -------
> >
> /home/olivier/tianocore/MdePkg/Library/BaseStackCheckLib/BaseStackChec
> > k
> > Gcc.c
> > :26:34: error: "_PCD_VALUE_PcdBaseStackCanary" undeclared here (not
> in
> > a
> > function)
> >  VOID *__stack_chk_guard = (VOID*)FixedPcdGet64 (PcdBaseStackCanary);
> > -------
> >
> > _PCD_VALUE_* are only generated when a binary module is built. And
> > there is no Module in MdePkg so adding
> > 'NULL|MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf' to
> > [LibraryClasses] would not help neither.
> > One solution would be to add
> > 'NULL|MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf' to
> > MdeModulePkg.dsc
> >
> > Which solution would you suggested for your comment 2.?
> >
> > Thanks,
> > Olivier
> >
> > > -----Original Message-----
> > > From: Gao, Liming [mailto:liming....@intel.com]
> > > Sent: 06 August 2014 04:00
> > > To: edk2-devel@lists.sourceforge.net; Kinney, Michael D
> > > Subject: Re: [edk2] [PATCH v3 1/3] MdePkg: Introduced
> > BaseStackCheckLib
> > >
> > > Olivier:
> > >   I have two minor comment.
> > > 1. The declaration of __stack_chk_fail() misses the function
> > comments.
> > > 2. Add it into Mdepkg.dsc [Components.ARM, Components.AARCH64]
> > section
> > > to verify its build.
> > >
> > >   Other part is good to me.  Reviewed-by: Gao, Liming
> > > <liming....@intel.com>
> > >
> > > Thanks
> > > Liming
> > > -----Original Message-----
> > > From: Olivier Martin [mailto:olivier.mar...@arm.com]
> > > Sent: Tuesday, August 05, 2014 5:48 PM
> > > To: Kinney, Michael D
> > > Cc: edk2-devel@lists.sourceforge.net
> > > Subject: [edk2] [PATCH v3 1/3] MdePkg: Introduced BaseStackCheckLib
> > >
> > > This library only support GCC, RVCT and XCode for now.
> > >
> > > Contributed-under: TianoCore Contribution Agreement 1.0
> > > Signed-off-by: Andrew Fish <af...@apple.com>
> > > Signed-off-by: Olivier Martin <olivier.mar...@arm.com>
> > > ---
> > >  .../Library/BaseStackCheckLib/BaseStackCheckGcc.c  | 61
> > > ++++++++++++++++++++++
> > >  .../BaseStackCheckLib/BaseStackCheckLib.inf        | 42
> > > +++++++++++++++
> > >  MdePkg/MdePkg.dec                                  |  4 ++
> > >  3 files changed, 107 insertions(+)
> > >  create mode 100644
> > > MdePkg/Library/BaseStackCheckLib/BaseStackCheckGcc.c
> > >  create mode 100644
> > > MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf
> > >
> > > diff --git a/MdePkg/Library/BaseStackCheckLib/BaseStackCheckGcc.c
> > > b/MdePkg/Library/BaseStackCheckLib/BaseStackCheckGcc.c
> > > new file mode 100644
> > > index 0000000..4160aff
> > > --- /dev/null
> > > +++ b/MdePkg/Library/BaseStackCheckLib/BaseStackCheckGcc.c
> > > @@ -0,0 +1,61 @@
> > > +/** @file
> > > + Base Stack Check library for GCC/clang.
> > > +
> > > + Use -fstack-protector-all compiler flag to make the compiler
> > > + insert the __stack_chk_guard "canary" value into the stack and
> > > + check the value prior to exiting the function. If the "canary" is
> > > + overwritten
> > > + __stack_chk_fail() is called. This is GCC specific code.
> > > +
> > > + Copyright (c) 2012, Apple Inc. All rights reserved.<BR> This
> > program
> > > + and the accompanying materials are licensed and made available
> > under
> > > + the terms and conditions of the BSD License which accompanies
> this
> > > + distribution.  The full text of the license may be found at
> > > + http://opensource.org/licenses/bsd-license.php.
> > > +
> > > + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS"
> > BASIS,
> > > + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS
> > OR
> > > IMPLIED.
> > > +
> > > +**/
> > > +
> > > +#include <Base.h>
> > > +#include <Library/BaseLib.h>
> > > +#include <Library/DebugLib.h>
> > > +#include <Library/PcdLib.h>
> > > +
> > > +VOID
> > > +__stack_chk_fail (
> > > + VOID
> > > + );
> > > +
> > > +
> > > +/// "canary" value that is inserted by the compiler into the stack
> > > frame.
> > > +VOID *__stack_chk_guard = (VOID*)FixedPcdGet64
> > > +(PcdBaseStackCanary);
> > > +
> > > +// If ASLR was enabled we could use //void
> > > +(*__stack_chk_guard)(void) = __stack_chk_fail;
> > > +
> > > +/**
> > > + Error path for compiler generated stack "canary" value check
> code.
> > If
> > > +the  stack canary has been overwritten this function gets called
> on
> > > +exit of the  function.
> > > +**/
> > > +VOID
> > > +__stack_chk_fail (
> > > + VOID
> > > + )
> > > +{
> > > +  UINT8 DebugPropertyMask;
> > > +
> > > +  DEBUG ((DEBUG_ERROR, "STACK FAULT: Buffer Overflow in function
> > > + %a.\n", __builtin_return_address(0)));
> > > +
> > > +  //
> > > +  // Generate a Breakpoint, DeadLoop, or NOP based on PCD settings
> > > even
> > > +if
> > > +  // BaseDebugLibNull is in use.
> > > +  //
> > > +  DebugPropertyMask = PcdGet8 (PcdDebugPropertyMask);
> > > +  if ((DebugPropertyMask &
> > > +DEBUG_PROPERTY_ASSERT_BREAKPOINT_ENABLED)
> > > != 0) {
> > > +    CpuBreakpoint ();
> > > +  } else if ((DebugPropertyMask &
> > > DEBUG_PROPERTY_ASSERT_DEADLOOP_ENABLED) != 0) {
> > > +   CpuDeadLoop ();
> > > +  }
> > > +}
> > > diff --git a/MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf
> > > b/MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf
> > > new file mode 100644
> > > index 0000000..3304284
> > > --- /dev/null
> > > +++ b/MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf
> > > @@ -0,0 +1,42 @@
> > > +## @file
> > > +#  Stack Check Library
> > > +#
> > > +#  Copyright (c) 2014, ARM Ltd. All rights reserved.<BR> # #  This
> > > +program and the accompanying materials #  are licensed and made
> > > +available under the terms and conditions of the BSD License #
> > > +which accompanies this distribution. The full text of the license
> > > +may be found at #  http://opensource.org/licenses/bsd-license.php.
> > > +#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS"
> > > +BASIS, #  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND,
> EITHER
> > > EXPRESS OR IMPLIED.
> > > +#
> > > +#
> > > +##
> > > +
> > > +[Defines]
> > > +  INF_VERSION                    = 0x00010005
> > > +  BASE_NAME                      = BaseStackCheckLib
> > > +  FILE_GUID                      = 5f6579f7-b648-4fdb-9f19-
> > > 4c17e27e8eff
> > > +  MODULE_TYPE                    = BASE
> > > +  VERSION_STRING                 = 1.0
> > > +  LIBRARY_CLASS                  = NULL
> > > +
> > > +
> > > +#
> > > +#  VALID_ARCHITECTURES           = ARM AARCH64
> > > +#
> > > +
> > > +[Sources]
> > > +  BaseStackCheckGcc.c | GCC
> > > +  BaseStackCheckGcc.c | RVCT
> > > +
> > > +[Packages]
> > > +  MdePkg/MdePkg.dec
> > > +
> > > +[LibraryClasses]
> > > +  BaseLib
> > > +  DebugLib
> > > +
> > > +[FixedPcd]
> > > +  gEfiMdePkgTokenSpaceGuid.PcdBaseStackCanary
> > > +  gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask
> > > diff --git a/MdePkg/MdePkg.dec b/MdePkg/MdePkg.dec index
> > > 4daf3e6..fbb7d2b 100644
> > > --- a/MdePkg/MdePkg.dec
> > > +++ b/MdePkg/MdePkg.dec
> > > @@ -1544,6 +1544,10 @@
> > >    #  The required memory space is decided by the value of
> > > PcdMaximumGuidedExtractHandler.
> > >
> > >
> >
> gEfiMdePkgTokenSpaceGuid.PcdGuidedExtractHandlerTableAddress|0x1000000
> > |
> > > UINT64|0x30001015
> > >
> > > +  ## Canary value for the stack overflow protection. This PCD can
> > > + be used by a firmware vendor  # or for debugging purposes to
> > > + change
> > the
> > > recommended value.
> > > +
> > gEfiMdePkgTokenSpaceGuid.PcdBaseStackCanary|0x0AFF|UINT64|0x0000002A
> > > +
> > >  [PcdsFixedAtBuild.IPF]
> > >    ## The base address of IO port space for IA64 arch
> > >
> > >
> >
> gEfiMdePkgTokenSpaceGuid.PcdIoBlockBaseAddressForIpf|0x0ffffc000000|UI
> > N
> > > T64|0x0000000f
> > > --
> > > 1.8.5
> > >
> > >
> > > -------------------------------------------------------------------
> -
> > > -
> > --
> > > -------
> > > Infragistics Professional
> > > Build stunning WinForms apps today!
> > > Reboot your WinForms applications with our WinForms controls.
> > > Build a bridge from your legacy apps to the future.
> > >
> >
> http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.
> > c
> > > lktrk
> > > _______________________________________________
> > > edk2-devel mailing list
> > > edk2-devel@lists.sourceforge.net
> > > https://lists.sourceforge.net/lists/listinfo/edk2-devel
> > >
> > > -------------------------------------------------------------------
> -
> > > -
> > --
> > > -------
> > > Infragistics Professional
> > > Build stunning WinForms apps today!
> > > Reboot your WinForms applications with our WinForms controls.
> > > Build a bridge from your legacy apps to the future.
> > >
> >
> http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.
> > c
> > > lktrk
> > > _______________________________________________
> > > edk2-devel mailing list
> > > edk2-devel@lists.sourceforge.net
> > > https://lists.sourceforge.net/lists/listinfo/edk2-devel
> >
> >
> >
> >
> >
> > ---------------------------------------------------------------------
> -
> > -
> > -------
> > Infragistics Professional
> > Build stunning WinForms apps today!
> > Reboot your WinForms applications with our WinForms controls.
> > Build a bridge from your legacy apps to the future.
> >
> http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.
> > c
> > lktrk
> > _______________________________________________
> > edk2-devel mailing list
> > edk2-devel@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/edk2-devel
> 
> 
> 
> 





------------------------------------------------------------------------------
Slashdot TV.  
Video for Nerds.  Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to