> -----Original Message----- > From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of Chen > A Chen > Sent: Monday, February 11, 2019 2:11 PM > To: edk2-devel@lists.01.org > Cc: Wu, Hao A; Gao, Liming > Subject: [edk2] [PATCH] MdeModulePkg/CapsuleApp: Fix potential NULL pointer > dereference issue > > To avoid potential NULL pointer dereference issue. Initialize them at > the beginning of the function. This patch is a supplement which was missed > at e98212cb5d59fff8f385d9179ad7f1a3ce9cf215 commit. > > Cc: Jian J Wang <jian.j.w...@intel.com> > Cc: Hao Wu <hao.a...@intel.com> > Cc: Liming Gao <liming....@intel.com> > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: Chen A Chen <chen.a.c...@intel.com> > --- > MdeModulePkg/Application/CapsuleApp/CapsuleDump.c | 23 > +++++++++++++--------- > .../Application/CapsuleApp/CapsuleOnDisk.c | 5 ++++- > 2 files changed, 18 insertions(+), 10 deletions(-) > > diff --git a/MdeModulePkg/Application/CapsuleApp/CapsuleDump.c > b/MdeModulePkg/Application/CapsuleApp/CapsuleDump.c > index 33d2ecc582..cbbfda1424 100644 > --- a/MdeModulePkg/Application/CapsuleApp/CapsuleDump.c > +++ b/MdeModulePkg/Application/CapsuleApp/CapsuleDump.c > @@ -1001,12 +1001,15 @@ DumpProvisionedCapsule ( > EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *Fs; > EFI_SHELL_PROTOCOL *ShellProtocol; > > - ShellProtocol = GetShellProtocol (); > - > Index = 0; > CapsuleDataPtr64 = NULL; > BootNext = NULL; > - ShellProtocol = NULL; > + > + ShellProtocol = GetShellProtocol (); > + if (ShellProtocol == NULL) { > + Print (L"Get Shell Protocol Fail\n"); > + return ; > + } > > // > // Dump capsule provisioned on Memory > @@ -1033,16 +1036,16 @@ DumpProvisionedCapsule ( > (VOID **) &CapsuleDataPtr64, > NULL > ); > - if (EFI_ERROR (Status)) { > + if (EFI_ERROR (Status) || CapsuleDataPtr64 == NULL) { > if (Index == 0) { > Print (L"No data.\n"); > } > break; > - } else { > - Index++; > - Print (L"Capsule Description at 0x%08x\n", *CapsuleDataPtr64); > - DumpBlockDescriptors ((EFI_CAPSULE_BLOCK_DESCRIPTOR*) (UINTN) > *CapsuleDataPtr64, DumpCapsuleInfo); > } > + > + Index++; > + Print (L"Capsule Description at 0x%08x\n", *CapsuleDataPtr64); > + DumpBlockDescriptors ((EFI_CAPSULE_BLOCK_DESCRIPTOR*) (UINTN) > *CapsuleDataPtr64, DumpCapsuleInfo); > } > > // > @@ -1057,7 +1060,9 @@ DumpProvisionedCapsule ( > (VOID **) &BootNext, > NULL > ); > - if (!EFI_ERROR (Status)) { > + if (EFI_ERROR (Status) || BootNext == NULL) { > + Print (L"Get BootNext Variable Fail. Status = %r\n", Status); > + } else { > UnicodeSPrint (BootOptionName, sizeof (BootOptionName), L"Boot%04x", > *BootNext); > Status = EfiBootManagerVariableToLoadOption (BootOptionName, > &BootNextOptionEntry); > if (!EFI_ERROR (Status)) { > diff --git a/MdeModulePkg/Application/CapsuleApp/CapsuleOnDisk.c > b/MdeModulePkg/Application/CapsuleApp/CapsuleOnDisk.c > index 4faa863bca..f6e46cbdb1 100644 > --- a/MdeModulePkg/Application/CapsuleApp/CapsuleOnDisk.c > +++ b/MdeModulePkg/Application/CapsuleApp/CapsuleOnDisk.c > @@ -445,7 +445,10 @@ GetUpdateFileSystem ( > (VOID **)&BootNextData, > NULL > ); > - if (!EFI_ERROR (Status)) { > + if (EFI_ERROR (Status) || BootNextData == NULL) { > + Print (L"Get Boot Next Data Fail. Status = %r\n", Status); > + return EFI_NOT_FOUND; > + } else {
Reviewed-by: Hao Wu <hao.a...@intel.com> Best Regards, Hao Wu > UnicodeSPrint (BootOptionName, sizeof (BootOptionName), L"Boot%04x", > *BootNextData); > Status = EfiBootManagerVariableToLoadOption (BootOptionName, > &BootNextOption); > if (!EFI_ERROR (Status)) { > -- > 2.16.2.windows.1 > > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel