From: Luca Boccassi Date: Fri, 10 Jan 2025 21:02:55 +0000 (+0000) Subject: stub: drop PE sections parsing cap X-Git-Tag: v258-rc1~1638 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8c5b359579b0f1029edafb0bd96b5ebfb271db76;p=thirdparty%2Fsystemd.git 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 --- diff --git a/src/boot/pe.c b/src/boot/pe.c index 173b2c0898f..97ea8d7220a 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)); }