From 95184817cb3ac3d3d2582496ccbfc3802cc0f245 Mon Sep 17 00:00:00 2001 From: Luca Boccassi 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)); }