From dfaa565559ba28a3b78c0f42b2480d28cecb7382 Mon Sep 17 00:00:00 2001 From: Hao Wu Date: Mon, 22 Apr 2019 13:42:18 +0800 Subject: MdeModulePkg/DxeCore: Please static checker for false report After commit 57df17fe26, some static check reports suspicious 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: Jian J Wang Signed-off-by: Hao Wu Acked-by: Ard Biesheuvel Reviewed-by: Liming Gao Reviewed-by: Michael D Kinney --- 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); -- cgit v1.2.3