summaryrefslogtreecommitdiffstats
path: root/mkinitcpio
diff options
context:
space:
mode:
Diffstat (limited to 'mkinitcpio')
-rwxr-xr-xmkinitcpio19
1 files changed, 1 insertions, 18 deletions
diff --git a/mkinitcpio b/mkinitcpio
index 30e9236..d5cf895 100755
--- a/mkinitcpio
+++ b/mkinitcpio
@@ -84,12 +84,6 @@ cleanup() {
resolve_kernver() {
local kernel=$1 offset kver
- # this is intentionally very loose. only ensure that we're
- # dealing with some sort of string that starts with something
- # resembling dotted decimal notation. remember that there's no
- # requirement for CONFIG_LOCALVERSION to be set.
- local kver_validator='^[[:digit:]]+(\.[[:digit:]]+)+'
-
if [[ -z $kernel ]]; then
uname -r
return 0
@@ -105,18 +99,7 @@ resolve_kernver() {
return 1
fi
- # scrape the version out of the kernel image. locate the offset
- # to the version string by reading 2 bytes out of image at at
- # address 0x20E. this leads us to a string of, at most, 128 bytes.
- # read the first word from this string as the kernel version.
- offset=$(hexdump -s 526 -n 2 -e '"%0d"' "$kernel")
- read kver _ < \
- <(dd if="$kernel" bs=1 count=127 skip=$(( offset + 0x200 )) 2>/dev/null)
-
- if [[ $kver =~ $kver_validator ]]; then
- printf '%s' "$kver"
- return 0
- fi
+ kver "$kernel" && return
error "invalid kernel specified: \`%s'" "$_optkver"