]> git.proxmox.com Git - mirror_edk2.git/commitdiff
UefiPayloadPkg: Fix the bug in dump guid HOB info functions
authorduntan <dun.tan@intel.com>
Fri, 10 Sep 2021 08:01:10 +0000 (16:01 +0800)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Fri, 10 Sep 2021 09:05:45 +0000 (09:05 +0000)
The input HobLength of PrintHandler should be data size instead of whole length of HOB

Cc: Guo Dong <guo.dong@intel.com>
Reviewed-by: Ray Ni <ray.ni@intel.com>
Cc: Maurice Ma <maurice.ma@intel.com>
Cc: Benjamin You <benjamin.you@intel.com>
Reviewed-by: Zhiguang Liu <zhiguang.liu@intel.com>
Signed-off-by: Dun Tan <dun.tan@intel.com>
UefiPayloadPkg/UefiPayloadEntry/PrintHob.c

index 5fb638d4a4532e8fd8ae1aa011931bb421229256..f93aeec47279bd8795996a3f989aef383bf84cf1 100644 (file)
@@ -317,9 +317,11 @@ PrintPciRootBridgeInfoGuidHob (
 {\r
   UNIVERSAL_PAYLOAD_PCI_ROOT_BRIDGES *PciRootBridges;\r
   UINTN                              Index;\r
+  UINTN                              Length;\r
   Index = 0;\r
   PciRootBridges = (UNIVERSAL_PAYLOAD_PCI_ROOT_BRIDGES *) GET_GUID_HOB_DATA (HobRaw);\r
-  ASSERT (HobLength >= sizeof (UNIVERSAL_PAYLOAD_PCI_ROOT_BRIDGES));\r
+  Length = sizeof (UNIVERSAL_PAYLOAD_PCI_ROOT_BRIDGES) + PciRootBridges->Count * sizeof (UNIVERSAL_PAYLOAD_PCI_ROOT_BRIDGE);\r
+  ASSERT (HobLength >= Length);\r
   DEBUG ((DEBUG_INFO, "   Revision         = 0x%x\n", PciRootBridges->Header.Revision));\r
   DEBUG ((DEBUG_INFO, "   Length           = 0x%x\n", PciRootBridges->Header.Length));\r
   DEBUG ((DEBUG_INFO, "   Count            = 0x%x\n", PciRootBridges->Count));\r
@@ -369,10 +371,12 @@ PrintExtraDataGuidHob (
 {\r
   UNIVERSAL_PAYLOAD_EXTRA_DATA *ExtraData;\r
   UINTN                        Index;\r
+  UINTN                        Length;\r
 \r
   Index     = 0;\r
   ExtraData = (UNIVERSAL_PAYLOAD_EXTRA_DATA *) GET_GUID_HOB_DATA (HobRaw);\r
-  ASSERT (HobLength >= ExtraData->Header.Length);\r
+  Length = sizeof (UNIVERSAL_PAYLOAD_EXTRA_DATA) + ExtraData->Count * sizeof (UNIVERSAL_PAYLOAD_EXTRA_DATA_ENTRY);\r
+  ASSERT (HobLength >= Length);\r
   DEBUG ((DEBUG_INFO, "   Revision  = 0x%x\n", ExtraData->Header.Revision));\r
   DEBUG ((DEBUG_INFO, "   Length    = 0x%x\n", ExtraData->Header.Length));\r
   DEBUG ((DEBUG_INFO, "   Count     = 0x%x\n", ExtraData->Count));\r
@@ -443,7 +447,7 @@ PrintGuidHob (
   for (Index = 0; Index < ARRAY_SIZE (GuidHobPrintHandleTable); Index++) {\r
     if (CompareGuid (&Hob.Guid->Name, GuidHobPrintHandleTable[Index].Guid)) {\r
       DEBUG ((DEBUG_INFO, "   Guid   = %a\n", GuidHobPrintHandleTable[Index].GuidName));\r
-      Status = GuidHobPrintHandleTable[Index].PrintHandler (Hob.Raw, Hob.Header->HobLength);\r
+      Status = GuidHobPrintHandleTable[Index].PrintHandler (Hob.Raw, GET_GUID_HOB_DATA_SIZE (Hob.Raw));\r
       return Status;\r
     }\r
   }\r