Browse Source

00systemd: check if systemd version is a number

The recent systemd upstream introduced a slightly modified version
string which included information about a git commit, which however
broke the version check in dracut. Unfortunately, the (( )) bash syntax
went along with it in certain cases and introduced a pretty nasty issue,
when the systemd would boot up but with slightly changed environment.

To prevent this from happening in the future, let's at least check if
the version parsed from the `systemd --version` output is a comparable
number.
master
Frantisek Sumsal 6 years ago committed by Lukáš Nykrýn
parent
commit
53cb081b4c
  1. 5
      modules.d/00systemd/module-setup.sh

5
modules.d/00systemd/module-setup.sh

@ -5,6 +5,11 @@ check() { @@ -5,6 +5,11 @@ check() {
[[ $mount_needs ]] && return 1
if require_binaries $systemdutildir/systemd; then
SYSTEMD_VERSION=$($systemdutildir/systemd --version | { read a b a; echo $b; })
# Check if the systemd version is a valid number
if ! [[ $SYSTEMD_VERSION =~ ^[0-9]+$ ]]; then
dfatal "systemd version is not a number ($SYSTEMD_VERSION)"
exit 1
fi
(( $SYSTEMD_VERSION >= 198 )) && return 0
return 255
fi

Loading…
Cancel
Save