]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EmbeddedPkg/Library/PrePiExtractGuidedSectionLib/PrePiExtractGuidedSectionLib.c
EmbeddedPkg: Correct the way of handling sections with a large size
[mirror_edk2.git] / EmbeddedPkg / Library / PrePiExtractGuidedSectionLib / PrePiExtractGuidedSectionLib.c
index 7b08de8ab9fe58fa8afff9dada4559af5638b885..e94f5424ef1d5a49fc6bc9b2b68fd3579e80e78d 100644 (file)
@@ -123,6 +123,7 @@ ExtractGuidedSectionGetInfo (
 {\r
   PRE_PI_EXTRACT_GUIDED_SECTION_DATA  *SavedData;\r
   UINT32                              Index;\r
+  EFI_GUID                            *SectionDefinitionGuid;\r
 \r
   if (InputSection == NULL) {\r
     return RETURN_INVALID_PARAMETER;\r
@@ -134,11 +135,17 @@ ExtractGuidedSectionGetInfo (
 \r
   SavedData = GetSavedData();\r
 \r
+  if (IS_SECTION2 (InputSection)) {\r
+    SectionDefinitionGuid = &(((EFI_GUID_DEFINED_SECTION2 *) InputSection)->SectionDefinitionGuid);\r
+  } else {\r
+    SectionDefinitionGuid = &(((EFI_GUID_DEFINED_SECTION *) InputSection)->SectionDefinitionGuid);\r
+  }\r
+\r
   //\r
   // Search the match registered GetInfo handler for the input guided section.\r
   //\r
   for (Index = 0; Index < SavedData->NumberOfExtractHandler; Index ++) {\r
-    if (CompareGuid (&SavedData->ExtractHandlerGuidTable[Index], &(((EFI_GUID_DEFINED_SECTION *) InputSection)->SectionDefinitionGuid))) {\r
+    if (CompareGuid (&SavedData->ExtractHandlerGuidTable[Index], SectionDefinitionGuid)) {\r
       break;\r
     }\r
   }\r
@@ -172,6 +179,7 @@ ExtractGuidedSectionDecode (
 {\r
   PRE_PI_EXTRACT_GUIDED_SECTION_DATA  *SavedData;\r
   UINT32                              Index;\r
+  EFI_GUID                            *SectionDefinitionGuid;\r
 \r
   if (InputSection == NULL) {\r
     return RETURN_INVALID_PARAMETER;\r
@@ -182,11 +190,17 @@ ExtractGuidedSectionDecode (
 \r
   SavedData = GetSavedData();\r
 \r
+  if (IS_SECTION2 (InputSection)) {\r
+    SectionDefinitionGuid = &(((EFI_GUID_DEFINED_SECTION2 *) InputSection)->SectionDefinitionGuid);\r
+  } else {\r
+    SectionDefinitionGuid = &(((EFI_GUID_DEFINED_SECTION *) InputSection)->SectionDefinitionGuid);\r
+  }\r
+\r
   //\r
   // Search the match registered GetInfo handler for the input guided section.\r
   //\r
   for (Index = 0; Index < SavedData->NumberOfExtractHandler; Index ++) {\r
-    if (CompareGuid (&SavedData->ExtractHandlerGuidTable[Index], &(((EFI_GUID_DEFINED_SECTION *) InputSection)->SectionDefinitionGuid))) {\r
+    if (CompareGuid (&SavedData->ExtractHandlerGuidTable[Index], SectionDefinitionGuid)) {\r
       break;\r
     }\r
   }\r