[edk2-devel] [PATCH v2] MdeModulePkg/DxeCore: Please static checker for false report

Wu, Hao A posted 1 patch 4 years, 12 months ago
Failed in applying to current master (apply log)
MdeModulePkg/Core/Dxe/Image/Image.c | 23 ++++++++++++--------
1 file changed, 14 insertions(+), 9 deletions(-)
[edk2-devel] [PATCH v2] MdeModulePkg/DxeCore: Please static checker for false report
Posted by Wu, Hao A 4 years, 12 months ago
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.biesheuvel@linaro.org>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Cc: Jian J Wang <jian.j.wang@intel.com>
Signed-off-by: Hao Wu <hao.a.wu@intel.com>
---
 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 (#39454): https://edk2.groups.io/g/devel/message/39454
Mute This Topic: https://groups.io/mt/31318926/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-

Re: [edk2-devel] [PATCH v2] MdeModulePkg/DxeCore: Please static checker for false report
Posted by Ard Biesheuvel 4 years, 12 months ago
On Wed, 24 Apr 2019 at 07:05, Hao Wu <hao.a.wu@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.biesheuvel@linaro.org>
> Cc: Michael D Kinney <michael.d.kinney@intel.com>
> Cc: Liming Gao <liming.gao@intel.com>
> Cc: Jian J Wang <jian.j.wang@intel.com>
> Signed-off-by: Hao Wu <hao.a.wu@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.biesheuvel@linaro.org>

> ---
>  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 (#39467): https://edk2.groups.io/g/devel/message/39467
Mute This Topic: https://groups.io/mt/31318926/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-

Re: [edk2-devel] [PATCH v2] MdeModulePkg/DxeCore: Please static checker for false report
Posted by Wu, Hao A 4 years, 11 months ago
> -----Original Message-----
> From: Ard Biesheuvel [mailto:ard.biesheuvel@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.wu@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.biesheuvel@linaro.org>
> > Cc: Michael D Kinney <michael.d.kinney@intel.com>
> > Cc: Liming Gao <liming.gao@intel.com>
> > Cc: Jian J Wang <jian.j.wang@intel.com>
> > Signed-off-by: Hao Wu <hao.a.wu@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.biesheuvel@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/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-

Re: [edk2-devel] [PATCH v2] MdeModulePkg/DxeCore: Please static checker for false report
Posted by Michael D Kinney 4 years, 11 months ago
Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com>

> -----Original Message-----
> From: Wu, Hao A
> Sent: Thursday, April 25, 2019 10:39 PM
> To: Ard Biesheuvel <ard.biesheuvel@linaro.org>; Kinney,
> Michael D <michael.d.kinney@intel.com>; Gao, Liming
> <liming.gao@intel.com>; Wang, Jian J
> <jian.j.wang@intel.com>
> Cc: edk2-devel-groups-io <devel@edk2.groups.io>
> Subject: RE: [PATCH v2] MdeModulePkg/DxeCore: Please
> static checker for false report
> 
> > -----Original Message-----
> > From: Ard Biesheuvel [mailto:ard.biesheuvel@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.wu@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.biesheuvel@linaro.org>
> > > Cc: Michael D Kinney <michael.d.kinney@intel.com>
> > > Cc: Liming Gao <liming.gao@intel.com>
> > > Cc: Jian J Wang <jian.j.wang@intel.com>
> > > Signed-off-by: Hao Wu <hao.a.wu@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.biesheuvel@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 (#39653): https://edk2.groups.io/g/devel/message/39653
Mute This Topic: https://groups.io/mt/31318926/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-

Re: [edk2-devel] [PATCH v2] MdeModulePkg/DxeCore: Please static checker for false report
Posted by Wu, Hao A 4 years, 11 months ago
Thanks all.
Patch pushed via commit dfaa565559.

Best Regards,
Hao Wu

> -----Original Message-----
> From: Kinney, Michael D
> Sent: Friday, April 26, 2019 10:51 PM
> To: Wu, Hao A; Ard Biesheuvel; Gao, Liming; Wang, Jian J; Kinney, Michael D
> Cc: edk2-devel-groups-io
> Subject: RE: [PATCH v2] MdeModulePkg/DxeCore: Please static checker for
> false report
> 
> Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com>
> 
> > -----Original Message-----
> > From: Wu, Hao A
> > Sent: Thursday, April 25, 2019 10:39 PM
> > To: Ard Biesheuvel <ard.biesheuvel@linaro.org>; Kinney,
> > Michael D <michael.d.kinney@intel.com>; Gao, Liming
> > <liming.gao@intel.com>; Wang, Jian J
> > <jian.j.wang@intel.com>
> > Cc: edk2-devel-groups-io <devel@edk2.groups.io>
> > Subject: RE: [PATCH v2] MdeModulePkg/DxeCore: Please
> > static checker for false report
> >
> > > -----Original Message-----
> > > From: Ard Biesheuvel [mailto:ard.biesheuvel@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.wu@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.biesheuvel@linaro.org>
> > > > Cc: Michael D Kinney <michael.d.kinney@intel.com>
> > > > Cc: Liming Gao <liming.gao@intel.com>
> > > > Cc: Jian J Wang <jian.j.wang@intel.com>
> > > > Signed-off-by: Hao Wu <hao.a.wu@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.biesheuvel@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 (#39700): https://edk2.groups.io/g/devel/message/39700
Mute This Topic: https://groups.io/mt/31318926/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-

Re: [edk2-devel] [PATCH v2] MdeModulePkg/DxeCore: Please static checker for false report
Posted by Liming Gao 4 years, 11 months ago
Hao:
   The change is good to me. Reviewed-by: Liming Gao <liming.gao@intel.com>

>-----Original Message-----
>From: Wu, Hao A
>Sent: Friday, April 26, 2019 1:39 PM
>To: Ard Biesheuvel <ard.biesheuvel@linaro.org>; Kinney, Michael D
><michael.d.kinney@intel.com>; Gao, Liming <liming.gao@intel.com>; Wang,
>Jian J <jian.j.wang@intel.com>
>Cc: edk2-devel-groups-io <devel@edk2.groups.io>
>Subject: RE: [PATCH v2] MdeModulePkg/DxeCore: Please static checker for
>false report
>
>> -----Original Message-----
>> From: Ard Biesheuvel [mailto:ard.biesheuvel@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.wu@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.biesheuvel@linaro.org>
>> > Cc: Michael D Kinney <michael.d.kinney@intel.com>
>> > Cc: Liming Gao <liming.gao@intel.com>
>> > Cc: Jian J Wang <jian.j.wang@intel.com>
>> > Signed-off-by: Hao Wu <hao.a.wu@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.biesheuvel@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 (#39632): https://edk2.groups.io/g/devel/message/39632
Mute This Topic: https://groups.io/mt/31318926/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-