Sisyphus repository
Last update: 1 october 2023 | SRPMs: 18631 | Visits: 37037927
en ru br
ALT Linux repos
S:0.60-alt36
5.0: 0.60-alt26
4.1: 0.60-alt25
4.0: 0.60-alt25
3.0: 0.60-alt22

Group :: System/Base
RPM: SimplePAMApps

 Main   Changelog   Spec   Patches   Sources   Download   Gear   Bugs and FR  Repocop 

Patch: SimplePAMApps-0.60-alt-login-su-ut_user.patch
Download


diff -uprk.orig SimplePAMApps-0.60.orig/common/include/wtmp.h SimplePAMApps-0.60/common/include/wtmp.h
--- SimplePAMApps-0.60.orig/common/include/wtmp.h	1998-11-25 16:35:10 +0300
+++ SimplePAMApps-0.60/common/include/wtmp.h	2004-02-08 20:49:01 +0300
@@ -1,5 +1,5 @@
 int utmp_do_open_session(const char *user, const char *terminal
                         , const char *rhost, pid_t pid
                         , const char **callname, const char **err_descr);
-int utmp_do_close_session(const char *terminal
+int utmp_do_close_session(const char *user, const char *terminal
                               , const char **callname, const char **err_descr);
diff -uprk.orig SimplePAMApps-0.60.orig/common/lib/wtmp.c SimplePAMApps-0.60/common/lib/wtmp.c
--- SimplePAMApps-0.60.orig/common/lib/wtmp.c	2004-02-08 20:38:32 +0300
+++ SimplePAMApps-0.60/common/lib/wtmp.c	2004-02-08 20:48:06 +0300
@@ -278,7 +278,7 @@ int utmp_do_open_session(const char *use
     return retval;
 }
 
-int utmp_do_close_session(const char *terminal
+int utmp_do_close_session(const char *user, const char *terminal
                               , const char **callname, const char **err_descr)
 {
     int retval;
@@ -313,7 +313,7 @@ int utmp_do_close_session(const char *te
             memset(&u_tmp, 0, sizeof(u_tmp));
             strncpy(u_tmp.ut_line, ut_line, UT_LINESIZE);
             strncpy(u_tmp.ut_id, ut_id, UT_IDSIZE);
-            memset(&u_tmp.ut_user, 0, sizeof(u_tmp.ut_user));
+            strncpy(u_tmp.ut_user, user, sizeof(u_tmp.ut_user));
             memset(&u_tmp.ut_host, 0, sizeof(u_tmp.ut_host));
             u_tmp.ut_addr = 0;
             u_tmp.ut_type = DEAD_PROCESS;      /* `old' login process */
diff -uprk.orig SimplePAMApps-0.60.orig/pamapps/lib/wtmp-gate.c SimplePAMApps-0.60/pamapps/lib/wtmp-gate.c
--- SimplePAMApps-0.60.orig/pamapps/lib/wtmp-gate.c	2004-02-08 20:38:32 +0300
+++ SimplePAMApps-0.60/pamapps/lib/wtmp-gate.c	2004-02-08 20:51:33 +0300
@@ -48,8 +48,14 @@ int utmp_close_session(pam_handle_t *pam
                               , const char **callname, const char **err_descr)
 {
     int retval;
-    const char *terminal;
+    const char *user, *terminal;
 
+    retval = pam_get_item(pamh, PAM_USER, (const void **)&user);
+    if (retval != PAM_SUCCESS) {
+        *callname = "pam_get_item(PAM_USER)";
+        *err_descr = pam_strerror(pamh, retval);
+        return -1;
+    }
     retval = pam_get_item(pamh, PAM_TTY, (const void **)&terminal);
     if (retval != PAM_SUCCESS) {
         *callname = "pam_get_item(PAM_TTY)";
@@ -59,5 +65,5 @@ int utmp_close_session(pam_handle_t *pam
     if (!terminal) terminal = "???";
 
     return
-        utmp_do_close_session(terminal, callname, err_descr);
+        utmp_do_close_session(user, terminal, callname, err_descr);
 }
 
design & coding: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
current maintainer: Michael Shigorin