18f565e290
coreutils: - Don't remove variables such as $PATH and $SHELL from the calling environment (from upstream). - When su is invoked with command line arguments for the shell (e.g. "su - -c 'cmd'"), set argv[0] in the shell to "-su" or "-<basename>" (as determined by the SU_NAME option in /etc/login.defs). This is necessary to make Bash compiled with the NON_INTERACTIVE_LOGIN_SHELLS option to read startup files. - Don't set $PATH to /bin:/usr/bin but inherit the $PATH of the caller. svn path=/nixpkgs/trunk/; revision=22140
20 lines
867 B
Diff
20 lines
867 B
Diff
When su is invoked with command line arguments for the shell (e.g. "su
|
|
- -c 'cmd'"), set argv[0] in the shell to "-su" or "-<basename>" (as
|
|
determined by the SU_NAME option in /etc/login.defs). This is
|
|
necessary to make Bash compiled with the NON_INTERACTIVE_LOGIN_SHELLS
|
|
option to read startup files. It is also consistent with the
|
|
behaviour of `su' in coreutils, and with the case where there are no
|
|
arguments ("su -").
|
|
|
|
diff -ru -x '*~' shadow-4.1.4.2-orig/src/su.c shadow-4.1.4.2/src/su.c
|
|
--- shadow-4.1.4.2-orig/src/su.c 2009-07-23 22:38:56.000000000 +0200
|
|
+++ shadow-4.1.4.2/src/su.c 2010-06-04 13:02:24.000000000 +0200
|
|
@@ -983,7 +983,7 @@
|
|
* Use the shell and create an argv
|
|
* with the rest of the command line included.
|
|
*/
|
|
- argv[-1] = shellstr;
|
|
+ argv[-1] = cp;
|
|
#ifndef USE_PAM
|
|
execve_shell (shellstr, &argv[-1], environ);
|
|
err = errno;
|