Blame SOURCES/0553-nx-set-the-nx-compatible-flag-in-EFI-grub-images.patch

b9d01e
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
b9d01e
From: Peter Jones <pjones@redhat.com>
b9d01e
Date: Tue, 22 Mar 2022 10:57:20 -0400
b9d01e
Subject: [PATCH] nx: set the nx compatible flag in EFI grub images
b9d01e
b9d01e
For NX, we need the grub binary to announce that it is compatible with
b9d01e
the NX feature.  This implies that when loading the executable grub
b9d01e
image, several attributes are true:
b9d01e
b9d01e
- the binary doesn't need an executable stack
b9d01e
- the binary doesn't need sections to be both executable and writable
b9d01e
- the binary knows how to use the EFI Memory Attributes protocol on code
b9d01e
  it is loading.
b9d01e
b9d01e
This patch adds a definition for the PE DLL Characteristics flag
b9d01e
GRUB_PE32_NX_COMPAT, and changes grub-mkimage to set that flag.
b9d01e
b9d01e
Signed-off-by: Peter Jones <pjones@redhat.com>
b9d01e
(cherry picked from commit 0c7f1aed5a87f75051b421903a900ccb4bbd795a)
b9d01e
(cherry picked from commit 2f9446d488da96de963f4ffe03b0a1c60a4664f5)
b9d01e
[rharwood: fix uninitialized use of stack_attrs]
b9d01e
Signed-off-by: Robbie Harwood <rharwood@redhat.com>
b9d01e
---
b9d01e
 util/mkimage.c | 1 +
b9d01e
 1 file changed, 1 insertion(+)
b9d01e
b9d01e
diff --git a/util/mkimage.c b/util/mkimage.c
b9d01e
index 16418e245d..c77025904c 100644
b9d01e
--- a/util/mkimage.c
b9d01e
+++ b/util/mkimage.c
b9d01e
@@ -1358,6 +1358,7 @@ grub_install_generate_image (const char *dir, const char *prefix,
b9d01e
 	    section = (struct grub_pe32_section_table *)(o64 + 1);
b9d01e
 	  }
b9d01e
 
b9d01e
+	PE_OHDR (o32, o64, dll_characteristics) = grub_host_to_target16 (GRUB_PE32_NX_COMPAT);
b9d01e
 	PE_OHDR (o32, o64, header_size) = grub_host_to_target32 (header_size);
b9d01e
 	PE_OHDR (o32, o64, entry_addr) = grub_host_to_target32 (layout.start_address);
b9d01e
 	PE_OHDR (o32, o64, image_base) = 0;