From: Jim Meyering Date: Tue, 18 Mar 1997 12:49:20 +0000 (+0000) Subject: (log_su): Resort to getpwuid if getlogin fails. X-Git-Tag: v2.22-rc1~347^2~10^2~50 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1ae8eaf31a8ee0994ce2de80db87a64478ad1a06;p=thirdparty%2Futil-linux.git (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. --- diff --git a/login-utils/su.c b/login-utils/su.c index 5edd1348e5..6f361161f9 100644 --- a/login-utils/su.c +++ b/login-utils/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 {