Commit 84ecba46 authored by osm0sis's avatar osm0sis Committed by John Wu

scripts: fix addon.d again by ensuring all arguments get passed

- /proc/$$/cmdline is \0 terminated argument strings except for the last argument which has no terminus, so the last argument was being dropped by `while read` which requires input to be \n terminated
- switch to a for loop, which will use the \n delimiter but also read the last argument; all arguments are still protected by quoting
- clean up potentially breaking recovery env since $OLD_PATH no longer exists
parent f7142e69
......@@ -107,7 +107,7 @@ ensure_bb() {
# Run in busybox environment to ensure consistent results
# /proc/<pid>/cmdline shall be <interpreter> <script> <arguments...>
local cmds=$($bb sh -o standalone -c "
tr '\0' '\n' < /proc/$$/cmdline | (while read -r arg; do
for arg in \$(tr '\0' '\n' < /proc/$$/cmdline); do
if [ -z \"\$cmds\" ]; then
# Skip the first argument as we want to change the interpreter
cmds=\"sh -o standalone\"
......@@ -115,7 +115,7 @@ ensure_bb() {
cmds=\"\$cmds '\$arg'\"
fi
done
echo \$cmds)")
echo \$cmds")
# Re-exec our script
echo $cmds | $bb xargs $bb
......@@ -151,7 +151,6 @@ recovery_cleanup() {
fi
done
umount -l /dev/random) 2>/dev/null
export PATH=$OLD_PATH
[ -z $OLD_LD_LIB ] || export LD_LIBRARY_PATH=$OLD_LD_LIB
[ -z $OLD_LD_PRE ] || export LD_PRELOAD=$OLD_LD_PRE
[ -z $OLD_LD_CFG ] || export LD_CONFIG_FILE=$OLD_LD_CFG
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment