]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
ukify: do not fail if pefile complains about hardcoded 256MB limit
authorLuca Boccassi <luca.boccassi@gmail.com>
Thu, 30 Jan 2025 01:19:59 +0000 (01:19 +0000)
committerLuca Boccassi <luca.boccassi@gmail.com>
Thu, 13 Feb 2025 15:54:46 +0000 (15:54 +0000)
pefile has an hardcoded limit to 256MB per section:

https://github.com/erocarrera/pefile/issues/396

When building an initrd with large firmware files and
lots of kernel modules, this limit can be reached.
Skip over those warnings.

(cherry picked from commit 32caed550f5a81eb87d2e39bc83917df2898d844)

src/ukify/ukify.py

index 7a9f63e1d467996f2abc2d79bfb158b2029806d2..6ad4298ebee50a239d1e6fcf1e5a74e6d398f9f2 100755 (executable)
@@ -892,8 +892,14 @@ def pe_add_sections(uki: UKI, output: str) -> None:
     )
     pe = pefile.PE(data=pe.write(), fast_load=True)
 
+    # pefile has an hardcoded limit of 256MB, which is not enough when building an initrd with large firmware
+    # files and all kernel modules. See: https://github.com/erocarrera/pefile/issues/396
     warnings = pe.get_warnings()
-    if warnings:
+    for w in warnings:
+        if 'VirtualSize is extremely large' in w:
+            continue
+        if 'VirtualAddress is beyond' in w:
+            continue
         raise PEError(f'pefile warnings treated as errors: {warnings}')
 
     security = pe.OPTIONAL_HEADER.DATA_DIRECTORY[pefile.DIRECTORY_ENTRY['IMAGE_DIRECTORY_ENTRY_SECURITY']]