diff options
author | Cy Schubert <cy@FreeBSD.org> | 2021-02-26 05:39:18 +0000 |
---|---|---|
committer | Cy Schubert <cy@FreeBSD.org> | 2021-02-26 06:03:38 +0000 |
commit | 763db58932874bb47fc6f9322ab81cc947f80991 (patch) | |
tree | 49620dc9e5179d76a1cc63cef8dd2dcc97f467e0 | |
parent | 589e4c1df4a6e4b1368f26fc7fef704a2e5cb42c (diff) | |
download | src-763db58932874bb47fc6f9322ab81cc947f80991.tar.gz src-763db58932874bb47fc6f9322ab81cc947f80991.zip |
rc: save and restore $IFS
Fix another bug in 77e1ccbee3ed6c837929e4e232fd07f95bfc8294. $IFS
should be fully restored for its other users.
PR: 249192
Reported by: jkim
MFC after: 3 weeks
X-MFC with: 77e1ccbee3ed6c837929e4e232fd07f95bfc8294
-rw-r--r-- | libexec/rc/rc | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/libexec/rc/rc b/libexec/rc/rc index 92eb5c48aab7..2cb840e68919 100644 --- a/libexec/rc/rc +++ b/libexec/rc/rc @@ -103,9 +103,10 @@ checkyesno rc_parallel_start && _rc_parallel='-p' files=`rcorder ${skip} ${skip_firstboot} ${_rc_parallel} /etc/rc.d/* 2>/dev/null` _rc_elem_done=' ' +oldifs="$IFS" IFS=$'\n' for _rc_group in ${files}; do - unset IFS + IFS="$oldifs" for _rc_elem in ${_rc_group}; do run_rc_script ${_rc_elem} ${_boot} & _rc_elem_done="${_rc_elem_done}${_rc_elem} " @@ -119,7 +120,7 @@ for _rc_group in ${files}; do done unset files local_rc -unset IFS +IFS="$oldifs" # Now that disks are mounted, for each dir in $local_startup # search for init scripts that use the new rc.d semantics. @@ -138,7 +139,7 @@ fi files=`rcorder ${skip} ${skip_firstboot} /etc/rc.d/* ${local_rc} ${_rc_parallel} 2>/dev/null` IFS=$'\n' for _rc_group in ${files}; do - unset IFS + IFS="$oldifs" for _rc_elem in ${_rc_group}; do case "$_rc_elem_done" in *" $_rc_elem "*) continue ;; @@ -149,7 +150,7 @@ for _rc_group in ${files}; do wait IFS=$'\n' done -unset IFS +IFS="$oldifs" # Remove the firstboot sentinel, and reboot if it was requested. # Be a bit paranoid about removing it to handle the common failure |