6edea0
From d8c0b10b15940d88a28acbcf93354e4da0babb8d Mon Sep 17 00:00:00 2001
6edea0
From: Kairui Song <kasong@redhat.com>
6edea0
Date: Wed, 10 Jun 2020 15:57:20 +0800
6edea0
Subject: [PATCH] dracut.sh: FIPS workaround for openssl-libs on Fedora/RHEL
6edea0
6edea0
On Fedora/RHEL, libcryto will verify both itself and libssl on start, if
6edea0
libssl is missing, FIPS self test will fail. However libssl is not a
6edea0
dependency of libcryto so dracut will not install it, unless some other
6edea0
binary or library pulls it in. Systemd requires libssl, so in most cases
6edea0
it just worked, but could fail in some corner cases where systemd is not
6edea0
used.
6edea0
6edea0
Signed-off-by: Kairui Song <kasong@redhat.com>
6edea0
(cherry picked from commit 5a4c3469338410b6aea9452994b4b0af1ba59be7)
6edea0
6edea0
Resolves: #1841077
6edea0
---
6edea0
 dracut.sh | 11 +++++++++++
6edea0
 1 file changed, 11 insertions(+)
6edea0
6edea0
diff --git a/dracut.sh b/dracut.sh
6edea0
index 4c5176a1..86e95449 100755
6edea0
--- a/dracut.sh
6edea0
+++ b/dracut.sh
6edea0
@@ -1840,6 +1840,17 @@ if [[ $kernel_only != yes ]]; then
6edea0
             break 2
6edea0
         done
6edea0
     done
6edea0
+
6edea0
+    # FIPS workaround for Fedora/RHEL: libcrypto needs libssl when FIPS is enabled
6edea0
+    if [[ $DRACUT_FIPS_MODE ]]; then
6edea0
+      for _dir in $libdirs; do
6edea0
+          for _f in "$dracutsysrootdir$_dir/libcrypto.so"*; do
6edea0
+              [[ -e "$_f" ]] || continue
6edea0
+              inst_libdir_file -o "libssl.so*"
6edea0
+              break 2
6edea0
+          done
6edea0
+      done
6edea0
+    fi
6edea0
 fi
6edea0
 
6edea0
 if [[ $do_strip = yes ]] && ! [[ $DRACUT_FIPS_MODE ]]; then
6edea0