diff options
author | Jason Pleau <jason@jpleau.ca> | 2018-05-30 21:48:22 -0400 |
---|---|---|
committer | Ray Strode <rstrode@redhat.com> | 2021-04-12 16:57:53 -0400 |
commit | 2da704c857d520a248f7e10096c5507cddef9df5 (patch) | |
tree | 359e0aed50b842a7911742af56398647af2a832f | |
parent | 592428ed768af081a7309346ae1feb04fbde8ef7 (diff) | |
download | gdm-2da704c857d520a248f7e10096c5507cddef9df5.tar.gz |
daemon/gdm-session-record.c: open/close the utmp database
pututxline() was used without first opening the utxmp database and
without closing it, preventing the logout entry from being fully
committed.
This caused the number of logged-in users to increment after each login,
as logging out did not correctly remove the user login record from utmp.
This commit wraps pututxline() between setutxent() and endutxent(),
making sure that the login/logout operation are fully flushed.
Fixes #381
-rw-r--r-- | daemon/gdm-session-record.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/daemon/gdm-session-record.c b/daemon/gdm-session-record.c index 487f1004..d2df5887 100644 --- a/daemon/gdm-session-record.c +++ b/daemon/gdm-session-record.c @@ -213,7 +213,9 @@ gdm_session_record_login (GPid session_pid, /* Handle utmp */ #if defined(HAVE_GETUTXENT) g_debug ("Adding or updating utmp record for login"); + setutxent(); pututxline (&session_record); + endutxent(); #elif defined(HAVE_LOGIN) login (&session_record); #endif @@ -256,7 +258,9 @@ gdm_session_record_logout (GPid session_pid, /* Handle utmp */ #if defined(HAVE_GETUTXENT) g_debug ("Adding or updating utmp record for logout"); + setutxent(); pututxline (&session_record); + endutxent(); #elif defined(HAVE_LOGOUT) logout (session_record.ut_line); #endif |