From bcdeccb6a3a4dc46f7edd4aa2f63d7f34593ff50 Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Tue, 18 Mar 1997 12:49:20 +0000 Subject: (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. --- src/su.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'src/su.c') diff --git a/src/su.c b/src/su.c index 5edd1348e..6f361161f 100644 --- a/src/su.c +++ b/src/su.c @@ -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 { -- cgit v1.2.3-54-g00ecf