mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-04-09 15:18:06 -05:00
Patch from Kurt Roeckx: apparently on Debian amd64, the ut_time member of
struct utmp is not equivalent to time_t (it's 32-bit). From Debian bug#265910. [originally from svn r4459]
This commit is contained in:
parent
0edefb1809
commit
df66432b5d
10
unix/pty.c
10
unix/pty.c
@ -97,6 +97,7 @@ static void setup_utmp(char *ttyname, char *location)
|
||||
#endif
|
||||
struct passwd *pw;
|
||||
FILE *wtmp;
|
||||
time_t uttime;
|
||||
|
||||
pw = getpwuid(getuid());
|
||||
memset(&utmp_entry, 0, sizeof(utmp_entry));
|
||||
@ -106,7 +107,10 @@ static void setup_utmp(char *ttyname, char *location)
|
||||
strncpy(utmp_entry.ut_id, ttyname+8, lenof(utmp_entry.ut_id));
|
||||
strncpy(utmp_entry.ut_user, pw->pw_name, lenof(utmp_entry.ut_user));
|
||||
strncpy(utmp_entry.ut_host, location, lenof(utmp_entry.ut_host));
|
||||
time(&utmp_entry.ut_time);
|
||||
/* Apparently there are some architectures where (struct utmp).ut_time
|
||||
* is not essentially time_t (e.g. Linux amd64). Hence the temporary. */
|
||||
time(&uttime);
|
||||
utmp_entry.ut_time = uttime; /* may truncate */
|
||||
|
||||
#if defined HAVE_PUTUTLINE
|
||||
utmpname(UTMP_FILE);
|
||||
@ -141,13 +145,15 @@ static void cleanup_utmp(void)
|
||||
{
|
||||
#ifndef OMIT_UTMP
|
||||
FILE *wtmp;
|
||||
time_t uttime;
|
||||
|
||||
if (!pty_stamped_utmp)
|
||||
return;
|
||||
|
||||
utmp_entry.ut_type = DEAD_PROCESS;
|
||||
memset(utmp_entry.ut_user, 0, lenof(utmp_entry.ut_user));
|
||||
time(&utmp_entry.ut_time);
|
||||
time(&uttime);
|
||||
utmp_entry.ut_time = uttime;
|
||||
|
||||
if ((wtmp = fopen(WTMP_FILE, "a")) != NULL) {
|
||||
fwrite(&utmp_entry, 1, sizeof(utmp_entry), wtmp);
|
||||
|
Loading…
x
Reference in New Issue
Block a user