From f243d4077da9559b70c794cb5e4d7c6c18eee789 Mon Sep 17 00:00:00 2001 From: nekral-guest Date: Fri, 18 May 2012 17:57:52 +0000 Subject: [PATCH] * NEWS, src/login.c: Log in utmp / utmpx / wtmp also when PAM is enabled. This is not done by pam_lastlog. This was broken on 2011-07-23. * NEWS, libmisc/utmp.c: Do not log in wtmp when PAM is enabled. This is done by pam_lastlog. --- ChangeLog | 8 ++++++++ NEWS | 4 +++- libmisc/utmp.c | 8 ++++++++ src/login.c | 6 ------ 4 files changed, 19 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 746ed1b8..feb9dc65 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2012-05-17 Nicolas François + + * NEWS, src/login.c: Log in utmp / utmpx / wtmp also when PAM is + enabled. This is not done by pam_lastlog. This was broken on + 2011-07-23. + * NEWS, libmisc/utmp.c: Do not log in wtmp when PAM is enabled. + This is done by pam_lastlog. + 2012-05-17 Christian Perrier * man/po/fr.po: French translation of manpages completed diff --git a/NEWS b/NEWS index 7171de99..68c2302b 100644 --- a/NEWS +++ b/NEWS @@ -2,7 +2,9 @@ $Id$ shadow-4.1.5 -> shadow-4.1.5.1 UNRELEASED - +- login + * Log into utmp(x) when PAM is enabled, but do not log into wtmp. + This complete pam_lastlog which logs into wtmp and in into utmp(x). shadow-4.1.4.3 -> shadow-4.1.5 2012-02-12 diff --git a/libmisc/utmp.c b/libmisc/utmp.c index 271aaa44..84e77fd3 100644 --- a/libmisc/utmp.c +++ b/libmisc/utmp.c @@ -129,6 +129,7 @@ static bool is_my_tty (const char *tty) return ret; } +#ifndef USE_PAM /* * Some systems already have updwtmp() and possibly updwtmpx(). Others * don't, so we re-implement these functions if necessary. @@ -160,6 +161,7 @@ static void updwtmpx (const char *filename, const struct utmpx *utx) } #endif /* ! HAVE_UPDWTMPX */ #endif /* ! USE_UTMPX */ +#endif /* ! USE_PAM */ /* @@ -313,7 +315,10 @@ int setutmp (struct utmp *ut) } endutent (); +#ifndef USE_PAM + /* This is done by pam_lastlog */ updwtmp (_WTMP_FILE, ut); +#endif /* ! USE_PAM */ return err; } @@ -446,7 +451,10 @@ int setutmpx (struct utmpx *utx) } endutxent (); +#ifndef USE_PAM + /* This is done by pam_lastlog */ updwtmpx (_WTMP_FILE "x", utx); +#endif /* ! USE_PAM */ return err; } diff --git a/src/login.c b/src/login.c index 0e107e2a..a38eb10b 100644 --- a/src/login.c +++ b/src/login.c @@ -126,12 +126,10 @@ static void usage (void); static void setup_tty (void); static void process_flags (int argc, char *const *argv); static /*@observer@*/const char *get_failent_user (/*@returned@*/const char *user); -#ifndef USE_PAM static void update_utmp (const char *user, const char *tty, const char *host, /*@null@*/const struct utmp *utent); -#endif /* ! USE_PAM */ #ifndef USE_PAM static struct faillog faillog; @@ -473,7 +471,6 @@ static /*@observer@*/const char *get_failent_user (/*@returned@*/const char *use return failent_user; } -#ifndef USE_PAM /* * update_utmp - Update or create an utmp entry in utmp, wtmp, utmpw, and * wtmpx @@ -499,7 +496,6 @@ static void update_utmp (const char *user, free (utx); #endif /* USE_UTMPX */ } -#endif /* ! USE_PAM */ /* * login - create a new login session for a user @@ -1215,13 +1211,11 @@ int main (int argc, char **argv) } } -#ifndef USE_PAM /* * The utmp entry needs to be updated to indicate the new status * of the session, the new PID and SID. */ update_utmp (username, tty, hostname, utent); -#endif /* ! USE_PAM */ /* The pwd and spwd entries for the user have been copied. *