]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Application/CapsuleApp/CapsuleOnDisk.c
IntelSiliconPkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / MdeModulePkg / Application / CapsuleApp / CapsuleOnDisk.c
index 393b7ae7db4158a9bdca80120c8d6b735f96d139..4ff69af1b4c75632cab681b8952faea7e34687f4 100644 (file)
@@ -151,9 +151,14 @@ DumpAllEfiSysPartition (
   UINTN                      NumberEfiSystemPartitions;\r
   EFI_SHELL_PROTOCOL         *ShellProtocol;\r
 \r
-  ShellProtocol = GetShellProtocol ();\r
   NumberEfiSystemPartitions = 0;\r
 \r
+  ShellProtocol = GetShellProtocol ();\r
+  if (ShellProtocol == NULL) {\r
+    Print (L"Get Shell Protocol Fail\n");;\r
+    return ;\r
+  }\r
+\r
   Print (L"EFI System Partition list:\n");\r
 \r
   gBS->LocateHandleBuffer (\r
@@ -350,7 +355,7 @@ GetEfiSysPartitionFromBootOptionFilePath (
   //\r
   do {\r
     PreFullPath = CurFullPath;\r
-    CurFullPath = EfiBootManagerGetNextFullDevicePath (DevicePath, CurFullPath);\r
+    CurFullPath = EfiBootManagerGetNextLoadOptionDevicePath (DevicePath, CurFullPath);\r
 \r
     if (PreFullPath != NULL) {\r
       FreePool (PreFullPath);\r
@@ -421,7 +426,13 @@ GetUpdateFileSystem (
   EFI_BOOT_MANAGER_LOAD_OPTION    NewOption;\r
 \r
   MappedDevicePath = NULL;\r
+  BootOptionBuffer = NULL;\r
+\r
   ShellProtocol = GetShellProtocol ();\r
+  if (ShellProtocol == NULL) {\r
+    Print (L"Get Shell Protocol Fail\n");;\r
+    return EFI_NOT_FOUND;\r
+  }\r
 \r
   //\r
   // 1. If Fs is not assigned and there are capsule provisioned before,\r
@@ -434,7 +445,10 @@ GetUpdateFileSystem (
                (VOID **)&BootNextData,\r
                NULL\r
                );\r
-    if (!EFI_ERROR (Status)) {\r
+    if (EFI_ERROR (Status) || BootNextData == NULL) {\r
+      Print (L"Get Boot Next Data Fail. Status = %r\n", Status);\r
+      return EFI_NOT_FOUND;\r
+    } else {\r
       UnicodeSPrint (BootOptionName, sizeof (BootOptionName), L"Boot%04x", *BootNextData);\r
       Status = EfiBootManagerVariableToLoadOption (BootOptionName, &BootNextOption);\r
       if (!EFI_ERROR (Status)) {\r
@@ -468,7 +482,9 @@ GetUpdateFileSystem (
   // 2. Get EFI system partition form boot options.\r
   //\r
   BootOptionBuffer = EfiBootManagerGetLoadOptions (&BootOptionCount, LoadOptionTypeBoot);\r
-  if (BootOptionCount == 0 && Map == NULL) {\r
+  if ( (BootOptionBuffer == NULL) ||\r
+       (BootOptionCount == 0 && Map == NULL)\r
+     ) {\r
     return EFI_NOT_FOUND;\r
   }\r
 \r