]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Application/CapsuleApp/CapsuleDump.c
MdeModulePkg/CapsuleApp: Fix potential NULL pointer dereference issue
[mirror_edk2.git] / MdeModulePkg / Application / CapsuleApp / CapsuleDump.c
index 7bef5a1378d4851f935c092670b3d54beacd4f93..ba2583accbc2c2ed2e84cc2811a41167e0e7aa43 100644 (file)
@@ -970,12 +970,15 @@ DumpProvisionedCapsule (
   EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *Fs;\r
   EFI_SHELL_PROTOCOL              *ShellProtocol;\r
 \r
-  ShellProtocol = GetShellProtocol ();\r
-\r
   Index             = 0;\r
   CapsuleDataPtr64  = NULL;\r
   BootNext          = NULL;\r
-  ShellProtocol     = NULL;\r
+\r
+  ShellProtocol = GetShellProtocol ();\r
+  if (ShellProtocol == NULL) {\r
+    Print (L"Get Shell Protocol Fail\n");\r
+    return ;\r
+  }\r
 \r
   //\r
   // Dump capsule provisioned on Memory\r
@@ -1002,16 +1005,16 @@ DumpProvisionedCapsule (
               (VOID **) &CapsuleDataPtr64,\r
               NULL\r
               );\r
-    if (EFI_ERROR (Status)) {\r
+    if (EFI_ERROR (Status) || CapsuleDataPtr64 == NULL) {\r
       if (Index == 0) {\r
         Print (L"No data.\n");\r
       }\r
       break;\r
-    } else {\r
-      Index++;\r
-      Print (L"Capsule Description at 0x%08x\n", *CapsuleDataPtr64);\r
-      DumpBlockDescriptors ((EFI_CAPSULE_BLOCK_DESCRIPTOR*) (UINTN) *CapsuleDataPtr64, DumpCapsuleInfo);\r
     }\r
+\r
+    Index++;\r
+    Print (L"Capsule Description at 0x%08x\n", *CapsuleDataPtr64);\r
+    DumpBlockDescriptors ((EFI_CAPSULE_BLOCK_DESCRIPTOR*) (UINTN) *CapsuleDataPtr64, DumpCapsuleInfo);\r
   }\r
 \r
   //\r
@@ -1026,7 +1029,9 @@ DumpProvisionedCapsule (
              (VOID **) &BootNext,\r
              NULL\r
             );\r
-  if (!EFI_ERROR (Status)) {\r
+  if (EFI_ERROR (Status) || BootNext == NULL) {\r
+    Print (L"Get BootNext Variable Fail. Status = %r\n", Status);\r
+  } else {\r
     UnicodeSPrint (BootOptionName, sizeof (BootOptionName), L"Boot%04x", *BootNext);\r
     Status = EfiBootManagerVariableToLoadOption (BootOptionName, &BootNextOptionEntry);\r
     if (!EFI_ERROR (Status)) {\r