Reviewed-by: Liming Gao <liming....@intel.com>
> -----Original Message----- > From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of Chen A > Chen > Sent: Friday, February 1, 2019 10:07 AM > To: edk2-devel@lists.01.org > Cc: Wu, Hao A <hao.a...@intel.com> > 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. > > Cc: Jian J Wang <jian.j.w...@intel.com> > Cc: Hao Wu <hao.a...@intel.com> > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: Chen A Chen <chen.a.c...@intel.com> > --- > MdeModulePkg/Application/CapsuleApp/CapsuleApp.c | 5 +++-- > MdeModulePkg/Application/CapsuleApp/CapsuleDump.c | 17 +++++++++++------ > MdeModulePkg/Application/CapsuleApp/CapsuleOnDisk.c | 17 +++++++++++++++-- > 3 files changed, 29 insertions(+), 10 deletions(-) > > diff --git a/MdeModulePkg/Application/CapsuleApp/CapsuleApp.c > b/MdeModulePkg/Application/CapsuleApp/CapsuleApp.c > index 896acd3304..198a63555d 100644 > --- a/MdeModulePkg/Application/CapsuleApp/CapsuleApp.c > +++ b/MdeModulePkg/Application/CapsuleApp/CapsuleApp.c > @@ -916,8 +916,9 @@ UefiMain ( > EFI_GUID ImageTypeId; > UINTN ImageIndex; > > - MapFsStr = NULL; > - CapsuleNum = 0; > + BlockDescriptors = NULL; > + MapFsStr = NULL; > + CapsuleNum = 0; > > Status = GetArg(); > if (EFI_ERROR(Status)) { > diff --git a/MdeModulePkg/Application/CapsuleApp/CapsuleDump.c > b/MdeModulePkg/Application/CapsuleApp/CapsuleDump.c > index 5bf617c5f6..7bef5a1378 100644 > --- a/MdeModulePkg/Application/CapsuleApp/CapsuleDump.c > +++ b/MdeModulePkg/Application/CapsuleApp/CapsuleDump.c > @@ -795,11 +795,13 @@ DumpCapsuleFromDisk ( > UINTN FileCount; > BOOLEAN NoFile; > > - DirHandle = NULL; > - FileHandle = NULL; > - Index = 0; > - FileCount = 0; > - NoFile = FALSE; > + DirHandle = NULL; > + FileHandle = NULL; > + Index = 0; > + FileInfoBuffer = NULL; > + FileInfo = NULL; > + FileCount = 0; > + NoFile = FALSE; > > Status = Fs->OpenVolume (Fs, &Root); > if (EFI_ERROR (Status)) { > @@ -970,7 +972,10 @@ DumpProvisionedCapsule ( > > ShellProtocol = GetShellProtocol (); > > - Index = 0; > + Index = 0; > + CapsuleDataPtr64 = NULL; > + BootNext = NULL; > + ShellProtocol = NULL; > > // > // Dump capsule provisioned on Memory > diff --git a/MdeModulePkg/Application/CapsuleApp/CapsuleOnDisk.c > b/MdeModulePkg/Application/CapsuleApp/CapsuleOnDisk.c > index 393b7ae7db..4faa863bca 100644 > --- a/MdeModulePkg/Application/CapsuleApp/CapsuleOnDisk.c > +++ b/MdeModulePkg/Application/CapsuleApp/CapsuleOnDisk.c > @@ -151,9 +151,14 @@ DumpAllEfiSysPartition ( > UINTN NumberEfiSystemPartitions; > EFI_SHELL_PROTOCOL *ShellProtocol; > > - ShellProtocol = GetShellProtocol (); > NumberEfiSystemPartitions = 0; > > + ShellProtocol = GetShellProtocol (); > + if (ShellProtocol == NULL) { > + Print (L"Get Shell Protocol Fail\n");; > + return ; > + } > + > Print (L"EFI System Partition list:\n"); > > gBS->LocateHandleBuffer ( > @@ -421,7 +426,13 @@ GetUpdateFileSystem ( > EFI_BOOT_MANAGER_LOAD_OPTION NewOption; > > MappedDevicePath = NULL; > + BootOptionBuffer = NULL; > + > ShellProtocol = GetShellProtocol (); > + if (ShellProtocol == NULL) { > + Print (L"Get Shell Protocol Fail\n");; > + return EFI_NOT_FOUND; > + } > > // > // 1. If Fs is not assigned and there are capsule provisioned before, > @@ -468,7 +479,9 @@ GetUpdateFileSystem ( > // 2. Get EFI system partition form boot options. > // > BootOptionBuffer = EfiBootManagerGetLoadOptions (&BootOptionCount, > LoadOptionTypeBoot); > - if (BootOptionCount == 0 && Map == NULL) { > + if ( (BootOptionBuffer == NULL) || > + (BootOptionCount == 0 && Map == NULL) > + ) { > return EFI_NOT_FOUND; > } > > -- > 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