(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:
Jim Meyering
1997-03-18 12:49:20 +00:00
parent 808a6a2308
commit bcdeccb6a3
+10 -4
View File
@@ -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
{