mirror of
git://git.sv.gnu.org/coreutils
synced 2026-06-02 05:50:14 -04:00
(log_su): Resort to getpwuid if getlogin fails.
If no tty name is found, use `none' in the log message. Based on a patch from Galen Hazelwood.
This commit is contained in:
@@ -237,10 +237,15 @@ log_su (const struct passwd *pw, int successful)
|
||||
the user, especially if someone su's from a su-shell. */
|
||||
old_user = getlogin ();
|
||||
if (old_user == NULL)
|
||||
old_user = "";
|
||||
{
|
||||
/* getlogin can fail -- usually due to lack of utmp entry.
|
||||
Resort to getpwuid. */
|
||||
struct passwd *pwd = getpwuid (getuid ());
|
||||
old_user = (pwd ? pwd->pw_name : "");
|
||||
}
|
||||
tty = ttyname (2);
|
||||
if (tty == NULL)
|
||||
tty = "";
|
||||
tty = "none";
|
||||
/* 4.2BSD openlog doesn't have the third parameter. */
|
||||
openlog (basename (program_name), 0
|
||||
#ifdef LOG_AUTH
|
||||
@@ -317,8 +322,9 @@ modify_environment (const struct passwd *pw, const char *shell)
|
||||
xputenv (concat ("SHELL", "=", shell));
|
||||
xputenv (concat ("USER", "=", pw->pw_name));
|
||||
xputenv (concat ("LOGNAME", "=", pw->pw_name));
|
||||
xputenv (concat ("PATH", "=", pw->pw_uid
|
||||
? DEFAULT_LOGIN_PATH : DEFAULT_ROOT_LOGIN_PATH));
|
||||
xputenv (concat ("PATH", "=", (pw->pw_uid
|
||||
? DEFAULT_LOGIN_PATH
|
||||
: DEFAULT_ROOT_LOGIN_PATH)));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user