38 lines
1.4 KiB
Diff
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));
|
|
}
|