> -----Original Message-----
> From: Ard Biesheuvel [mailto:ard.biesheu...@linaro.org]
> Sent: Wednesday, April 24, 2019 3:07 PM
> To: Wu, Hao A
> Cc: edk2-devel-groups-io; Kinney, Michael D; Gao, Liming; Wang, Jian J
> Subject: Re: [PATCH v2] MdeModulePkg/DxeCore: Please static checker for
> false report
> 
> On Wed, 24 Apr 2019 at 07:05, Hao Wu <hao.a...@intel.com> wrote:
> >
> > After commit 57df17fe26, some static check reports suspicous NULL pointer
> > deference at line:
> >
> >   Entry->MachineType = Entry->Emulator->MachineType;
> >                        ^^^^^^^^^^^^^^^
> >
> > within function PeCoffEmuProtocolNotify().
> >
> > However, 'Entry->Emulator' is guaranteed to have a non-NULL value when
> > previous call to the CoreHandleProtocol() returns EFI_SUCCESS.
> >
> > This commit will re-write the return status check for CoreHandleProtocol()
> > to add explicit NULL pointer check for protocol instance pointer.
> >
> > Cc: Ard Biesheuvel <ard.biesheu...@linaro.org>
> > Cc: Michael D Kinney <michael.d.kin...@intel.com>
> > Cc: Liming Gao <liming....@intel.com>
> > Cc: Jian J Wang <jian.j.w...@intel.com>
> > Signed-off-by: Hao Wu <hao.a...@intel.com>
> 
> Again, I think it is rather unfortunate that we need code changes such
> as this one just to remove warnings from a flawed static analyzer. But
> the change looks correct to me, so
> 
> Acked-by: Ard Biesheuvel <ard.biesheu...@linaro.org>

Thanks Ard,

Hello Mike, Liming and Jian,

Do you have additional feedbacks on this patch?
If not, I plan to push it with the 'Ack' tag from Ard.

Best Regards,
Hao Wu

> 
> > ---
> >  MdeModulePkg/Core/Dxe/Image/Image.c | 23 ++++++++++++--------
> >  1 file changed, 14 insertions(+), 9 deletions(-)
> >
> > diff --git a/MdeModulePkg/Core/Dxe/Image/Image.c
> b/MdeModulePkg/Core/Dxe/Image/Image.c
> > index 08306a73fd..de5b8bed27 100644
> > --- a/MdeModulePkg/Core/Dxe/Image/Image.c
> > +++ b/MdeModulePkg/Core/Dxe/Image/Image.c
> > @@ -134,12 +134,14 @@ PeCoffEmuProtocolNotify (
> >    IN  VOID            *Context
> >    )
> >  {
> > -  EFI_STATUS          Status;
> > -  UINTN               BufferSize;
> > -  EFI_HANDLE          EmuHandle;
> > -  EMULATOR_ENTRY      *Entry;
> > +  EFI_STATUS                            Status;
> > +  UINTN                                 BufferSize;
> > +  EFI_HANDLE                            EmuHandle;
> > +  EDKII_PECOFF_IMAGE_EMULATOR_PROTOCOL  *Emulator;
> > +  EMULATOR_ENTRY                        *Entry;
> >
> >    EmuHandle = NULL;
> > +  Emulator  = NULL;
> >
> >    while (TRUE) {
> >      BufferSize = sizeof (EmuHandle);
> > @@ -157,16 +159,19 @@ PeCoffEmuProtocolNotify (
> >        return;
> >      }
> >
> > -    Entry = AllocateZeroPool (sizeof (*Entry));
> > -    ASSERT (Entry != NULL);
> > -
> >      Status = CoreHandleProtocol (
> >                 EmuHandle,
> >                 &gEdkiiPeCoffImageEmulatorProtocolGuid,
> > -               (VOID **)&Entry->Emulator
> > +               (VOID **)&Emulator
> >                 );
> > -    ASSERT_EFI_ERROR (Status);
> > +    if (EFI_ERROR (Status) || Emulator == NULL) {
> > +      continue;
> > +    }
> > +
> > +    Entry = AllocateZeroPool (sizeof (*Entry));
> > +    ASSERT (Entry != NULL);
> >
> > +    Entry->Emulator    = Emulator;
> >      Entry->MachineType = Entry->Emulator->MachineType;
> >
> >      InsertTailList (&mAvailableEmulators, &Entry->Link);
> > --
> > 2.12.0.windows.1
> >

-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#39623): https://edk2.groups.io/g/devel/message/39623
Mute This Topic: https://groups.io/mt/31318926/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to