]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
ukify: catch error when loading foreign pe file
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Tue, 20 Dec 2022 09:20:35 +0000 (10:20 +0100)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Tue, 20 Dec 2022 09:39:10 +0000 (10:39 +0100)
The autodetection code is supposed to throw ValueError when it
cannot figure out the version so that we fall back to the next method.
With the patch:
  Kernel version not specified, starting autodetection 😖.
  Real-Mode Kernel Header magic not found
  + readelf --notes vmlinuz/arm64/vmlinuz-6.0.9-300.fc37.aarch64
  readelf: vmlinuz/arm64/vmlinuz-6.0.9-300.fc37.aarch64: Error: Not an ELF file - it has the wrong magic bytes at the start
  Found uname version: 6.0.9-300.fc37.aarch64

src/ukify/ukify.py

index e9e5d13d13ef309b7dba7c2b2672f1ceed43f2f0..cd27f92a97805b844340f40097782d3a637bb681 100755 (executable)
@@ -161,7 +161,10 @@ class Uname:
         ]
 
         print('+', shell_join(cmd))
-        notes = subprocess.check_output(cmd, text=True)
+        try:
+            notes = subprocess.check_output(cmd, stderr=subprocess.PIPE, text=True)
+        except subprocess.CalledProcessError as e:
+            raise ValueError(e.stderr.strip()) from e
 
         if not (m := re.search(cls.NOTES_PATTERN, notes, re.MULTILINE)):
             raise ValueError('Cannot find Linux version note')