nalika / rpms / grub2

Forked from rpms/grub2 2 years ago
Clone

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

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