From b2c6b584e2227e68f54c8843925dcb73aefe87ac Mon Sep 17 00:00:00 2001 From: Antonio Alvarez Feijoo Date: Wed, 9 Aug 2023 11:28:15 +0200 Subject: [PATCH] fix(dracut.sh): exit if resolving executable dependencies fails We came across an issue where, when resolving executable dependencies, a call to a buggy glib function in `dracut-install` was causing a termination with SIGSEGV, but dracut didn't stop the build process, which resulted in an unbootable initrd, due to missing required libraries. ``` dracut: *** Resolving executable dependencies *** xargs: /usr/lib/dracut/dracut-install: terminated by signal 11 dracut: *** Resolving executable dependencies done *** ``` Therefore, stop the initrd creation in this case. --- dracut.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/dracut.sh b/dracut.sh index fe2954a04..d7bf4b071 100755 --- a/dracut.sh +++ b/dracut.sh @@ -2045,7 +2045,13 @@ if [[ $kernel_only != yes ]]; then # shellcheck disable=SC2086 find "$initdir" -type f -perm /0111 -not -path '*.ko' -print0 \ | xargs -r -0 $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${dracutsysrootdir:+-r "$dracutsysrootdir"} -R ${DRACUT_FIPS_MODE:+-f} -- - dinfo "*** Resolving executable dependencies done ***" + # shellcheck disable=SC2181 + if (($? == 0)); then + dinfo "*** Resolving executable dependencies done ***" + else + dfatal "Resolving executable dependencies failed" + exit 1 + fi fi # Now we are done with lazy resolving, always install dependencies -- 2.39.2