File 0500-Reset-IFS-variable.patch of Package dracut.28355

From bcaa0a11b41765be7cbb92e2641750b5adb8e326 Mon Sep 17 00:00:00 2001
From: Hannes Reinecke <hare@suse.de>
Date: Mon, 14 Jul 2014 10:22:31 +0200
Subject: [PATCH] Reset IFS variable

Setting and unsetting the IFS variable is tricky. To be on the
safe side we should always reset the IFS variable to its original
value after parsing.

Signed-off-by: Hannes Reinecke <hare@suse.de>
---
 modules.d/95dasd/parse-dasd.sh       | 2 ++
 modules.d/95dasd_rules/parse-dasd.sh | 8 ++++++--
 modules.d/95zfcp_rules/parse-zfcp.sh | 4 ++++
 3 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/modules.d/95dasd/parse-dasd.sh b/modules.d/95dasd/parse-dasd.sh
index 35c997c..976bd03 100755
--- a/modules.d/95dasd/parse-dasd.sh
+++ b/modules.d/95dasd/parse-dasd.sh
@@ -1,8 +1,10 @@
 #!/bin/sh
 for dasd_arg in $(getargs rd.dasd= -d rd_DASD= DASD=); do
     (
+        local OLDIFS="$IFS"
         IFS=","
         set -- $dasd_arg
+        IFS="$OLDIFS"
         echo "$@" | normalize_dasd_arg >> /etc/dasd.conf
     )
 done
diff --git a/modules.d/95dasd_rules/parse-dasd.sh b/modules.d/95dasd_rules/parse-dasd.sh
index e1bee62..1cc621f 100755
--- a/modules.d/95dasd_rules/parse-dasd.sh
+++ b/modules.d/95dasd_rules/parse-dasd.sh
@@ -59,8 +59,10 @@ for dasd_arg in $(getargs root=) $(getargs resume=); do
                 ;;
         esac
         if [ -n "$ccw_arg" ] ; then
+            OLDIFS="$IFS"
             IFS="-"
             set -- $ccw_arg
+            IFS="$OLDIFS"
             create_udev_rule $2
         fi
     )
@@ -68,9 +70,10 @@ done
 
 for dasd_arg in $(getargs rd.dasd=); do
     (
+        OLDIFS="$IFS"
         IFS=","
         set -- $dasd_arg
-        unset IFS
+        IFS="$OLDIFS"
         while (($# > 0)); do
             case $1 in
                 autodetect|probeonly)
@@ -78,13 +81,14 @@ for dasd_arg in $(getargs rd.dasd=); do
                     ;;
                 *-*)
                     range=$1
+                    OLDIFS="$IFS"
                     IFS="-"
                     set -- $range
                     start=${1#0.0.}
                     shift
                     end=${1#0.0.}
                     shift
-                    unset IFS
+                    IFS="$OLDIFS"
                     for dev in $(seq $(( 16#$start )) $(( 16#$end )) ) ; do
                         create_udev_rule $(printf "0.0.%04x" "$dev")
                     done
diff --git a/modules.d/95zfcp_rules/parse-zfcp.sh b/modules.d/95zfcp_rules/parse-zfcp.sh
index 77412f7..7d47d35 100755
--- a/modules.d/95zfcp_rules/parse-zfcp.sh
+++ b/modules.d/95zfcp_rules/parse-zfcp.sh
@@ -53,8 +53,10 @@ fi
 
 for zfcp_arg in $(getargs rd.zfcp); do
     (
+        OLDIFS="$IFS"
         IFS=","
         set $zfcp_arg
+        IFS="$OLDIFS"
         create_udev_rule $1 $2 $3
     )
 done
@@ -70,8 +72,10 @@ for zfcp_arg in $(getargs root=) $(getargs resume=); do
                 ;;
         esac
         if [ -n "$ccw_arg" ] ; then
+            OLDIFS="$IFS"
             IFS="-"
             set -- $ccw_arg
+            IFS="$OLDIFS"
             _wwpn=${4%:*}
             _lun=${4#*:}
             create_udev_rule $2 $wwpn $lun
-- 
2.6.6

openSUSE Build Service is sponsored by