File 0078-Restore-original-IFS-value.patch of Package dracut.892

From 3ad963984b30a990c1ac94c81deb410322daafb6 Mon Sep 17 00:00:00 2001
From: Hannes Reinecke <hare@suse.de>
Date: Mon, 23 Jun 2014 14:06:47 +0200
Subject: Restore original IFS value

Whenever the IFS setting is modified it needs to be restored to
its original value. Otherwise it'll lead to unexpected results.

References: bnc#883770

Signed-off-by: Hannes Reinecke <hare@suse.de>
---
 modules.d/81cio_ignore/parse-cio_accept.sh | 3 ++-
 modules.d/90kernel-modules/insmodpost.sh   | 2 +-
 modules.d/90kernel-modules/parse-kernel.sh | 4 ++++
 modules.d/95dasd/parse-dasd.sh             | 2 +-
 modules.d/95dasd_rules/parse-dasd.sh       | 8 +++++---
 modules.d/95iscsi/module-setup.sh          | 6 ++++--
 modules.d/95zfcp/parse-zfcp.sh             | 2 +-
 modules.d/95zfcp_rules/parse-zfcp.sh       | 4 +++-
 modules.d/98systemd/dracut-pre-udev.sh     | 4 ++--
 9 files changed, 23 insertions(+), 12 deletions(-)

diff --git a/modules.d/81cio_ignore/parse-cio_accept.sh b/modules.d/81cio_ignore/parse-cio_accept.sh
index fec8a92..4f899d2 100644
--- a/modules.d/81cio_ignore/parse-cio_accept.sh
+++ b/modules.d/81cio_ignore/parse-cio_accept.sh
@@ -10,6 +10,7 @@ if [ -z $CIO_IGNORE ] ; then
     return
 fi
 if [ -n "$CIO_ACCEPT" ] ; then
+    OLDIFS="$IFS"
     IFS=,
     set -- $CIO_ACCEPT
     while (($# > 0)) ; do
@@ -17,5 +18,5 @@ if [ -n "$CIO_ACCEPT" ] ; then
         cio_ignore --remove $1
         shift
     done
-    unset IFS
+    IFS="$OLDIFS"
 fi
diff --git a/modules.d/90kernel-modules/insmodpost.sh b/modules.d/90kernel-modules/insmodpost.sh
index d2b8723..141f091 100755
--- a/modules.d/90kernel-modules/insmodpost.sh
+++ b/modules.d/90kernel-modules/insmodpost.sh
@@ -6,7 +6,7 @@
 
 for modlist in $(getargs rd.driver.post -d rdinsmodpost=); do
     (
-        IFS=,
+        local IFS=,
         for m in $modlist; do
             modprobe $m
         done
diff --git a/modules.d/90kernel-modules/parse-kernel.sh b/modules.d/90kernel-modules/parse-kernel.sh
index fa891bf..e012e52 100755
--- a/modules.d/90kernel-modules/parse-kernel.sh
+++ b/modules.d/90kernel-modules/parse-kernel.sh
@@ -13,10 +13,12 @@ fi
 
 for i in $(getargs rd.driver.pre -d rdloaddriver=); do
     (
+        OLDIFS="$IFS"
         IFS=,
         for p in $i; do
             modprobe $p 2>&1 | vinfo
         done
+        IFS="$OLDIFS"
     )
 done
 
@@ -25,10 +27,12 @@ done
 
 for i in $(getargs rd.driver.blacklist -d rdblacklist=); do
     (
+        OLDIFS="$IFS"
         IFS=,
         for p in $i; do
             echo "blacklist $p" >>  $_modprobe_d/initramfsblacklist.conf
         done
+        IFS="$OLDIFS"
     )
 done
 
diff --git a/modules.d/95dasd/parse-dasd.sh b/modules.d/95dasd/parse-dasd.sh
index 1aa1455..aba720b 100755
--- a/modules.d/95dasd/parse-dasd.sh
+++ b/modules.d/95dasd/parse-dasd.sh
@@ -3,7 +3,7 @@
 # ex: ts=8 sw=4 sts=4 et filetype=sh
 for dasd_arg in $(getargs rd.dasd= -d rd_DASD= DASD=); do
     (
-        IFS=","
+        local IFS=","
         set -- $dasd_arg
         echo "$@" | normalize_dasd_arg >> /etc/dasd.conf
     )
diff --git a/modules.d/95dasd_rules/parse-dasd.sh b/modules.d/95dasd_rules/parse-dasd.sh
index 94a4b30..02b4aea 100755
--- a/modules.d/95dasd_rules/parse-dasd.sh
+++ b/modules.d/95dasd_rules/parse-dasd.sh
@@ -51,8 +51,10 @@ for dasd_arg in $(getargs root=) $(getargs resume=); do
                 break;
         esac
         if [ -n "$ccw_arg" ] ; then
+            OLDIFS="$IFS"
             IFS="-"
             set -- $ccw_arg
+            IFS="$OLDIFS"
             create_udev_rule $2
         fi
     )
@@ -60,9 +62,8 @@ done
 
 for dasd_arg in $(getargs rd.dasd=); do
     (
-        IFS=","
+        local IFS=","
         set -- $dasd_arg
-        unset IFS
         while (($# > 0)); do
             case $1 in
                 autodetect|probeonly)
@@ -70,13 +71,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 $(( 10#$start )) $(( 10#$end )) ) ; do
                         create_udev_rule $(printf "0.0.%04d" "$dev")
                     done
diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh
index b90e298..cfa6f39 100755
--- a/modules.d/95iscsi/module-setup.sh
+++ b/modules.d/95iscsi/module-setup.sh
@@ -3,16 +3,18 @@
 # ex: ts=8 sw=4 sts=4 et filetype=sh
 
 get_ibft_mod() {
-    local ibft_mac=$1
+    local ibft_mac=$1 IFS
     # Return the iSCSI offload module for a given MAC address
     iscsiadm -m iface | while read iface_name iface_desc ; do
+        OLDIFS="$IFS"
         IFS=$','
         set -- $iface_desc
+        IFS="$OLDIFS"
         if [ "$ibft_mac" = "$2" ] ; then
             echo $1
             return 0
         fi
-        unset IFS
+        
     done
 }
 
diff --git a/modules.d/95zfcp/parse-zfcp.sh b/modules.d/95zfcp/parse-zfcp.sh
index 9b22d93..1d21472 100755
--- a/modules.d/95zfcp/parse-zfcp.sh
+++ b/modules.d/95zfcp/parse-zfcp.sh
@@ -6,7 +6,7 @@ getargbool 1 rd.zfcp.conf -d -n rd_NO_ZFCPCONF || rm /etc/zfcp.conf
 
 for zfcp_arg in $(getargs rd.zfcp -d 'rd_ZFCP='); do
     (
-        IFS=","
+        local IFS=","
         set $zfcp_arg
         echo "$@" >> /etc/zfcp.conf
     )
diff --git a/modules.d/95zfcp_rules/parse-zfcp.sh b/modules.d/95zfcp_rules/parse-zfcp.sh
index 8538ae3..56152da 100755
--- a/modules.d/95zfcp_rules/parse-zfcp.sh
+++ b/modules.d/95zfcp_rules/parse-zfcp.sh
@@ -44,7 +44,7 @@ EOF
 
 for zfcp_arg in $(getargs rd.zfcp); do
     (
-        IFS=","
+        local IFS=","
         set $zfcp_arg
         create_udev_rule $1 $2 $3
     )
@@ -58,8 +58,10 @@ for zfcp_arg in $(getargs root=) $(getargs resume=); do
                 break;
         esac
         if [ -n "$ccw_arg" ] ; then
+            OLDIFS="$IFS"
             IFS="-"
             set -- $ccw_arg
+            IFS="$OLDIFS"
             wwpn=${4%:*}
             lun=${4#*:}
             create_udev_rule $2 $wwpn $lun
diff --git a/modules.d/98systemd/dracut-pre-udev.sh b/modules.d/98systemd/dracut-pre-udev.sh
index 638da40..77977d2 100755
--- a/modules.d/98systemd/dracut-pre-udev.sh
+++ b/modules.d/98systemd/dracut-pre-udev.sh
@@ -26,7 +26,7 @@ fi
 
 for i in $(getargs rd.driver.pre -d rdloaddriver=); do
     (
-        IFS=,
+        local IFS=,
         for p in $i; do
             modprobe $p 2>&1 | vinfo
         done
@@ -38,7 +38,7 @@ done
 
 for i in $(getargs rd.driver.blacklist -d rdblacklist=); do
     (
-        IFS=,
+        local IFS=,
         for p in $i; do
             echo "blacklist $p" >>  $_modprobe_d/initramfsblacklist.conf
         done
-- 
1.8.4.5