]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.c
MdeModulePkg/BmBoot: Report status when fail to load/start boot option
[mirror_edk2.git] / MdeModulePkg / Library / DxeCapsuleLibFmp / DxeCapsuleLib.c
index d4026dd5c783763d36791238c6f52bbe97c3dc40..f56809bb7019de467a887d9bb6899129a983e573 100644 (file)
@@ -39,7 +39,6 @@
 #include <Library/CapsuleLib.h>\r
 #include <Library/DevicePathLib.h>\r
 #include <Library/UefiLib.h>\r
-#include <Library/PcdLib.h>\r
 #include <Library/BmpSupportLib.h>\r
 \r
 #include <Protocol/GraphicsOutput.h>\r
@@ -610,6 +609,8 @@ DumpAllFmpInfo (
     FreePool(FmpImageInfoBuf);\r
   }\r
 \r
+  FreePool (HandleBuffer);\r
+\r
   return ;\r
 }\r
 \r
@@ -763,7 +764,7 @@ GetFmpHandleBufferByType (
             MatchedHandleBuffer[MatchedNumberOfHandles] = HandleBuffer[Index];\r
           }\r
           if (MatchedResetRequiredBuffer != NULL) {\r
-            MatchedResetRequiredBuffer[MatchedNumberOfHandles] = (((TempFmpImageInfo->AttributesSupported & \r
+            MatchedResetRequiredBuffer[MatchedNumberOfHandles] = (((TempFmpImageInfo->AttributesSupported &\r
                                                                  IMAGE_ATTRIBUTE_RESET_REQUIRED) != 0) &&\r
                                                                  ((TempFmpImageInfo->AttributesSetting &\r
                                                                  IMAGE_ATTRIBUTE_RESET_REQUIRED) != 0));\r
@@ -777,6 +778,8 @@ GetFmpHandleBufferByType (
     FreePool(FmpImageInfoBuf);\r
   }\r
 \r
+  FreePool (HandleBuffer);\r
+\r
   if (MatchedNumberOfHandles == 0) {\r
     return EFI_NOT_FOUND;\r
   }\r
@@ -1221,7 +1224,9 @@ ProcessFmpCapsuleImage (
                &HandleBuffer,\r
                &ResetRequiredBuffer\r
                );\r
-    if (EFI_ERROR(Status)) {\r
+    if (EFI_ERROR(Status) ||\r
+        (HandleBuffer == NULL) ||\r
+        (ResetRequiredBuffer == NULL)) {\r
       NotReady = TRUE;\r
       RecordFmpCapsuleStatus (\r
         NULL,\r
@@ -1416,6 +1421,12 @@ SupportCapsuleImage (
   }\r
 \r
   if (IsFmpCapsule(CapsuleHeader)) {\r
+    //\r
+    // Fake capsule header is valid case in QueryCapsuleCpapbilities().\r
+    //\r
+    if (CapsuleHeader->HeaderSize == CapsuleHeader->CapsuleImageSize) {\r
+      return EFI_SUCCESS;\r
+    }\r
     //\r
     // Check layout of FMP capsule\r
     //\r