From 7fa2d6347bf5c029dcc74aaa05355c3873dad0b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Lesimple?= Date: Thu, 18 Jan 2018 11:01:26 +0100 Subject: [PATCH] check_vmlinux: when readelf doesn't work, try harder with another way --- spectre-meltdown-checker.sh | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/spectre-meltdown-checker.sh b/spectre-meltdown-checker.sh index 32f7442..2f964af 100755 --- a/spectre-meltdown-checker.sh +++ b/spectre-meltdown-checker.sh @@ -438,8 +438,18 @@ vmlinux='' vmlinux_err='' check_vmlinux() { - readelf -h "$1" > /dev/null 2>&1 || return 1 - return 0 + readelf -h "$1" > /dev/null 2>&1 && return 0 + # normally we would just use readelf to test for the binary, and it would be sufficient. + # but for some archs/distros it doesn't work well (issue #82), so we add a dumber check: + # uncompressed kernels always have the following string present + if ! which strings >/dev/null 2>&1; then + vmlinux_err="missing 'strings' tool, please install it, usually it's in the 'binutils' package" + return 0 + else + strings "$1" | grep -q '^Linux version ' && return 0 + fi + # not found: kernel not valid + return 1 } try_decompress()