From: Karel Zak Date: Mon, 9 Sep 2013 10:24:01 +0000 (+0200) Subject: su: fix lastlog and btmp logging X-Git-Tag: v2.24-rc1~296 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9b5dc4cb8d5d82c31c0cda898832998c21afc303;p=thirdparty%2Futil-linux.git su: fix lastlog and btmp logging The su(1) logging code mix ups "old" and "new" passwd structs. The result is things like Sep 9 11:50:45 x2 su: (to kzak) kzak on none in /var/log/messages. The right log entry is Sep 9 11:50:45 x2 su: (to root) kzak on pts/3 The bug has been introduced by commit c74a7af17c7a176c358dfaa8e1814786c89ebc14. References: https://bugzilla.redhat.com/show_bug.cgi?id=1005194 Signed-off-by: Karel Zak --- diff --git a/login-utils/su-common.c b/login-utils/su-common.c index ade5c9210a..858af0176f 100644 --- a/login-utils/su-common.c +++ b/login-utils/su-common.c @@ -161,7 +161,7 @@ log_syslog(struct passwd const *pw, bool successful) old_user = pwd ? pwd->pw_name : ""; } - if (get_terminal_name(STDERR_FILENO, NULL, &tty, NULL) == 0 && tty) + if (get_terminal_name(STDERR_FILENO, NULL, &tty, NULL) != 0 || !tty) tty = "none"; openlog (program_invocation_short_name, 0 , LOG_AUTH); @@ -483,9 +483,6 @@ authenticate (const struct passwd *pw) done: - if (lpw && lpw->pw_name) - pw = lpw; - log_syslog(pw, !is_pam_failure(retval)); if (is_pam_failure(retval))