]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkModulePkg/Core/Pei/Image/Image.c
Add temporary fix for PeLoader
[mirror_edk2.git] / EdkModulePkg / Core / Pei / Image / Image.c
index 6b9a7eb444946a2d3bda3cd13e653d1b6489196f..32f0fe652300822d1f1e58d7d5a5da673d9baa19 100644 (file)
@@ -147,17 +147,20 @@ Returns:
     EFI_IMAGE_OPTIONAL_HEADER_PTR_UNION Hdr;\r
     UINT32                              NumberOfRvaAndSizes;\r
 \r
-    DosHeader = (EFI_IMAGE_DOS_HEADER *)Pe32Data;\r
-    if (DosHeader->e_magic == EFI_IMAGE_DOS_SIGNATURE) {\r
-      //\r
-      // DOS image header is present, so read the PE header after the DOS image header\r
-      //\r
-      Hdr.Pe32 = (EFI_IMAGE_NT_HEADERS32 *)((UINTN)Pe32Data + (UINTN)((DosHeader->e_lfanew) & 0x0ffff));\r
-    } else {\r
-      //\r
-      // DOS image header is not present, so PE header is at the image base\r
-      //\r
-      Hdr.Pe32 = (EFI_IMAGE_NT_HEADERS32 *)Pe32Data;\r
+    Hdr.Pe32 = NULL;\r
+    if (TEImageHeader == NULL) {\r
+      DosHeader = (EFI_IMAGE_DOS_HEADER *)Pe32Data;\r
+      if (DosHeader->e_magic == EFI_IMAGE_DOS_SIGNATURE) {\r
+        //\r
+        // DOS image header is present, so read the PE header after the DOS image header\r
+        //\r
+        Hdr.Pe32 = (EFI_IMAGE_NT_HEADERS32 *)((UINTN)Pe32Data + (UINTN)((DosHeader->e_lfanew) & 0x0ffff));\r
+      } else {\r
+        //\r
+        // DOS image header is not present, so PE header is at the image base\r
+        //\r
+        Hdr.Pe32 = (EFI_IMAGE_NT_HEADERS32 *)Pe32Data;\r
+      }\r
     }\r
 \r
     //\r