From e98212cb5d59fff8f385d9179ad7f1a3ce9cf215 Mon Sep 17 00:00:00 2001 From: Chen A Chen Date: Fri, 1 Feb 2019 10:06:49 +0800 Subject: [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 Cc: Hao Wu Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Chen A Chen Reviewed-by: Liming Gao --- .../Application/CapsuleApp/CapsuleApp.c | 5 +++-- .../Application/CapsuleApp/CapsuleDump.c | 17 +++++++++++------ .../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.39.2