]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleReportLib.c
MdeModulePkg/CapsuleLib: Add NULL capsule name in record.
[mirror_edk2.git] / MdeModulePkg / Library / DxeCapsuleLibFmp / DxeCapsuleReportLib.c
index 25468712a89459337608ed0f6455c3c3b1f2920c..d34eb25a6e5d06336415c38402537fc8c4a8487d 100644 (file)
@@ -104,7 +104,7 @@ IsFmpCapsuleProcessed (
     CapsuleResult = &mCapsuleResultVariableCache[Index].CapsuleResultHeader;\r
     if (CapsuleResult->VariableTotalSize >= sizeof(EFI_CAPSULE_RESULT_VARIABLE_HEADER)) {\r
       if (CompareGuid(&CapsuleResult->CapsuleGuid, &gEfiFmpCapsuleGuid)) {\r
-        if (CapsuleResult->VariableTotalSize >= sizeof(EFI_CAPSULE_RESULT_VARIABLE_HEADER) + sizeof(EFI_CAPSULE_RESULT_VARIABLE_FMP)) {\r
+        if (CapsuleResult->VariableTotalSize >= sizeof(EFI_CAPSULE_RESULT_VARIABLE_HEADER) + sizeof(EFI_CAPSULE_RESULT_VARIABLE_FMP) + sizeof(CHAR16) * 2) {\r
           CapsuleResultFmp = (EFI_CAPSULE_RESULT_VARIABLE_FMP *)(CapsuleResult + 1);\r
           if (CompareGuid(&CapsuleResultFmp->UpdateImageTypeId, &ImageHeader->UpdateImageTypeId) &&\r
               (CapsuleResultFmp->UpdateImageIndex == ImageHeader->UpdateImageIndex) &&\r
@@ -256,6 +256,7 @@ RecordCapsuleStatusVariable (
   EFI_STATUS                          Status;\r
 \r
   CapsuleResultVariable.VariableTotalSize = sizeof(CapsuleResultVariable);\r
+  CapsuleResultVariable.Reserved = 0;\r
   CopyGuid (&CapsuleResultVariable.CapsuleGuid, &CapsuleHeader->CapsuleGuid);\r
   ZeroMem(&CapsuleResultVariable.CapsuleProcessed, sizeof(CapsuleResultVariable.CapsuleProcessed));\r
   gRT->GetTime(&CapsuleResultVariable.CapsuleProcessed, NULL);\r
@@ -298,13 +299,17 @@ RecordFmpCapsuleStatusVariable (
   UINT32                              CapsuleResultVariableSize;\r
 \r
   CapsuleResultVariable     = NULL;\r
-  CapsuleResultVariableSize = sizeof(EFI_CAPSULE_RESULT_VARIABLE_HEADER) + sizeof(EFI_CAPSULE_RESULT_VARIABLE_FMP);\r
-  CapsuleResultVariable     = AllocatePool (CapsuleResultVariableSize);\r
+  //\r
+  // Allocate zero CHAR16 for CapsuleFileName and CapsuleTarget.\r
+  //\r
+  CapsuleResultVariableSize = sizeof(EFI_CAPSULE_RESULT_VARIABLE_HEADER) + sizeof(EFI_CAPSULE_RESULT_VARIABLE_FMP) + sizeof(CHAR16) * 2;\r
+  CapsuleResultVariable     = AllocateZeroPool (CapsuleResultVariableSize);\r
   if (CapsuleResultVariable == NULL) {\r
     return EFI_OUT_OF_RESOURCES;\r
   }\r
   CapsuleResultVariableHeader = (VOID *)CapsuleResultVariable;\r
   CapsuleResultVariableHeader->VariableTotalSize = CapsuleResultVariableSize;\r
+  CapsuleResultVariableHeader->Reserved = 0;\r
   CopyGuid(&CapsuleResultVariableHeader->CapsuleGuid, &CapsuleHeader->CapsuleGuid);\r
   ZeroMem(&CapsuleResultVariableHeader->CapsuleProcessed, sizeof(CapsuleResultVariableHeader->CapsuleProcessed));\r
   gRT->GetTime(&CapsuleResultVariableHeader->CapsuleProcessed, NULL);\r