From: Zbigniew Jędrzejewski-Szmek Date: Tue, 20 Dec 2022 09:20:35 +0000 (+0100) Subject: ukify: catch error when loading foreign pe file X-Git-Tag: v253-rc1~226^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=33bdec184f08d955979484d63bb60fba3942adca;p=thirdparty%2Fsystemd.git ukify: catch error when loading foreign pe file 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 --- diff --git a/src/ukify/ukify.py b/src/ukify/ukify.py index e9e5d13d13e..cd27f92a978 100755 --- a/src/ukify/ukify.py +++ b/src/ukify/ukify.py @@ -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')