]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
fix(dracut.sh): exit if resolving executable dependencies fails
authorAntonio Alvarez Feijoo <antonio.feijoo@suse.com>
Wed, 9 Aug 2023 09:28:15 +0000 (11:28 +0200)
committerAntonio Álvarez Feijoo <antonio.feijoo@suse.com>
Thu, 10 Aug 2023 06:19:57 +0000 (08:19 +0200)
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

index fe2954a044d2ee7fc37f7314ffc2d4626c87c16a..d7bf4b071f658003044ecf8293ecbf20a04ab7d5 100755 (executable)
--- 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