diff options
Diffstat (limited to 'sys-kernel/dracut/files/050-dracut-lib.sh-quote-variables-in-parameter-expansion.patch')
-rw-r--r-- | sys-kernel/dracut/files/050-dracut-lib.sh-quote-variables-in-parameter-expansion.patch | 111 |
1 files changed, 0 insertions, 111 deletions
diff --git a/sys-kernel/dracut/files/050-dracut-lib.sh-quote-variables-in-parameter-expansion.patch b/sys-kernel/dracut/files/050-dracut-lib.sh-quote-variables-in-parameter-expansion.patch deleted file mode 100644 index 11ca7add6d6f..000000000000 --- a/sys-kernel/dracut/files/050-dracut-lib.sh-quote-variables-in-parameter-expansion.patch +++ /dev/null @@ -1,111 +0,0 @@ -From 8e1a4dc5f8a777fc718db490414ffdc9dc755f66 Mon Sep 17 00:00:00 2001 -From: Jonas Witschel <diabonas@archlinux.org> -Date: Sat, 18 Apr 2020 14:55:41 +0200 -Subject: [PATCH] dracut-lib.sh: quote variables in parameter expansion - patterns - -According to POSIX.1-2017, 2.6.2 Parameter Expansion: - -${parameter%[word]} [...] The word shall be expanded to produce a -pattern. - -This means if word contains variables that itself contain special -characters like asterisks or backslashes, these are treated as pattern -characters unless the variable is quoted. Try e.g. the following example -in bash, dash or (busybox) ash: - -i='a\c'; j='\'; echo "${i%$j*}" - -This prints "a\c" because "$j*" is expanded to "\*", escaping the -asterisk. In contrast, - -i='a\c'; j='\'; echo "${i%"$j"*}" - -produces the expected result "a" because the backslash is not specially -treated any more after quoting. - -The quotes that this commit adds have been previously removed in commit -f9c96cf56fed390841eac05c43826e62014c9188, citing issues with busybox -hush without further specifying the actual error. I tested a recent -busybox build (upstream commit 9aa751b08ab03d6396f86c3df77937a19687981b) -and couldn't find any problems. Note that the above example always -produces "a\c" in hush regardless of quoting $j, making hush unsuitable -for use with dracut, but using quotes in parameter expansions generally -works. - -The unquoted variables break the "rd.luks.uuid/name" kernel command line -options in dracut 050 because - -str_replace "$luksname" '\' '\\' - -in modules.d/90crypt/parse-crypt.sh is not able to escape the -backslashes any more, see GH-723, GH-727: backslashes in the -systemd-cryptsetup@.service unit name stay unescaped for use in udev -(cf. commit 0f6d93eb9d63695a64002ec8b0421fbc9fc8a7a3), leading to -failures in starting the unit. - -This partially reverts commit f9c96cf56fed390841eac05c43826e62014c9188. ---- - modules.d/99base/dracut-lib.sh | 16 ++++++++-------- - 1 file changed, 8 insertions(+), 8 deletions(-) - -diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh -index c53cd13b..c57523d3 100755 ---- a/modules.d/99base/dracut-lib.sh -+++ b/modules.d/99base/dracut-lib.sh -@@ -24,7 +24,7 @@ debug_on() { - - # returns OK if $1 contains literal string $2 (and isn't empty) - strstr() { -- [ "${1##*$2*}" != "$1" ] -+ [ "${1##*"$2"*}" != "$1" ] - } - - # returns OK if $1 matches (completely) glob pattern $2 -@@ -43,18 +43,18 @@ strglobin() { - - # returns OK if $1 contains literal string $2 at the beginning, and isn't empty - str_starts() { -- [ "${1#$2*}" != "$1" ] -+ [ "${1#"$2"*}" != "$1" ] - } - - # returns OK if $1 contains literal string $2 at the end, and isn't empty - str_ends() { -- [ "${1%*$2}" != "$1" ] -+ [ "${1%*"$2"}" != "$1" ] - } - - trim() { - local var="$*" -- var="${var#${var%%[![:space:]]*}}" # remove leading whitespace characters -- var="${var%${var##*[![:space:]]}}" # remove trailing whitespace characters -+ var="${var#"${var%%[![:space:]]*}"}" # remove leading whitespace characters -+ var="${var%"${var##*[![:space:]]}"}" # remove trailing whitespace characters - printf "%s" "$var" - } - -@@ -108,9 +108,9 @@ str_replace() { - local out='' - - while strstr "${in}" "$s"; do -- chop="${in%%$s*}" -+ chop="${in%%"$s"*}" - out="${out}${chop}$r" -- in="${in#*$s}" -+ in="${in#*"$s"}" - done - echo "${out}${in}" - } -@@ -396,7 +396,7 @@ splitsep() { - while [ -n "$str" -a "$#" -gt 1 ]; do - tmp="${str%%$sep*}" - eval "$1='${tmp}'" -- str="${str#$tmp}" -+ str="${str#"$tmp"}" - str="${str#$sep}" - shift - done --- -2.26.2 - |