systemd/0161-stub-drop-PE-sections-parsing-cap.patch
Jan Macku 1e3185a7aa systemd-257-5
Resolves: RHEL-71409
2025-02-03 14:56:43 +01:00

38 lines
1.4 KiB
Diff

From 95184817cb3ac3d3d2582496ccbfc3802cc0f245 Mon Sep 17 00:00:00 2001
From: Luca Boccassi <luca.boccassi@gmail.com>
Date: Fri, 10 Jan 2025 21:02:55 +0000
Subject: [PATCH] stub: drop PE sections parsing cap
This was added originally as it was thought that Windows applied
the same cap. Nowadays the specs do not mention it, and it is
believed Windows no longer applies it either, so drop it in order
to allow an arbitrary number of DTBs to be included
Fixes https://github.com/systemd/systemd/issues/35943
(cherry picked from commit 8c5b359579b0f1029edafb0bd96b5ebfb271db76)
---
src/boot/pe.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/src/boot/pe.c b/src/boot/pe.c
index 69b42faff5..f3217abd22 100644
--- a/src/boot/pe.c
+++ b/src/boot/pe.c
@@ -7,7 +7,6 @@
#define DOS_FILE_MAGIC "MZ"
#define PE_FILE_MAGIC "PE\0\0"
-#define MAX_SECTIONS 96
#if defined(__i386__)
# define TARGET_MACHINE_TYPE 0x014CU
@@ -132,7 +131,6 @@ static bool verify_pe(
(pe->FileHeader.Machine == TARGET_MACHINE_TYPE ||
(allow_compatibility && pe->FileHeader.Machine == TARGET_MACHINE_TYPE_COMPATIBILITY)) &&
pe->FileHeader.NumberOfSections > 0 &&
- pe->FileHeader.NumberOfSections <= MAX_SECTIONS &&
IN_SET(pe->OptionalHeader.Magic, OPTHDR32_MAGIC, OPTHDR64_MAGIC) &&
pe->FileHeader.SizeOfOptionalHeader < SIZE_MAX - (dos->ExeHeader + offsetof(PeFileHeader, OptionalHeader));
}