install.sh was wrongly waiting until after atomically replacing the
old file to set the correct permissions on the new file. in the case
of the dynamic linker, this would cause a dynamic-linked chmod command
not to run (due to missing executable permissions on the dynamic
linker) and thus leave the system in an unusable state.
even if chmod is static-linked, the old behavior had a race window
where dynamic-linked programs could fail to run.
ln -s "$1" "$tmp"
else
cat < "$1" > "$tmp"
+chmod "$mode" "$tmp"
fi
mv -f "$tmp" "$2"
exit 1
}
-test "$symlink" || chmod "$mode" "$2"
-
exit 0