From: Lubomir Rintel Date: Tue, 23 Dec 2014 21:03:10 +0000 (+0100) Subject: dracut-functions.sh: avoid tokenizing ldconfig output with 'read' X-Git-Tag: RHEL-7.2~9 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5263556ff3314d61e7e9da685bbd59bebc79efe1;p=thirdparty%2Fdracut.git dracut-functions.sh: avoid tokenizing ldconfig output with 'read' The space does not separate the elements reliably, spaces can be embedded in parenthesized expressions too: libgmpxx.so.4 (libc6, hwcap: 0x0000000004000000) => /lib/sse2/libgmpxx.so.4 libgmp.so.10 (libc6, hwcap: 0x0000000004000000) => /lib/sse2/libgmp.so.10 This results in dracut creating '0x0000000004000000' and '=>' directories in the initramfs image. (cherry picked from commit c59779cf9337bc0fc48c7a4d8437f7253f6822c3) --- diff --git a/dracut-functions.sh b/dracut-functions.sh index 585b68365..9218779ca 100755 --- a/dracut-functions.sh +++ b/dracut-functions.sh @@ -97,17 +97,7 @@ fi ldconfig_paths() { - local a i - declare -A a - for i in $( - ldconfig -pN 2>/dev/null | grep -F '=>' | grep -E -v '/(lib|lib64|usr/lib|usr/lib64)/[^/]*$' | while read a b c d; do - d=${d%/*} - printf "%s\n" "$d"; - done - ); do - a["$i"]=1; - done; - printf "%s\n" ${!a[@]} + ldconfig -pN 2>/dev/null | grep -E -v '/(lib|lib64|usr/lib|usr/lib64)/[^/]*$' | sed -n 's,.* => \(.*\)/.*,\1,p' | sort | uniq } # Detect lib paths