mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-04-17 19: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
|
#endif
|
||||||
struct passwd *pw;
|
struct passwd *pw;
|
||||||
FILE *wtmp;
|
FILE *wtmp;
|
||||||
|
time_t uttime;
|
||||||
|
|
||||||
pw = getpwuid(getuid());
|
pw = getpwuid(getuid());
|
||||||
memset(&utmp_entry, 0, sizeof(utmp_entry));
|
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_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_user, pw->pw_name, lenof(utmp_entry.ut_user));
|
||||||
strncpy(utmp_entry.ut_host, location, lenof(utmp_entry.ut_host));
|
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
|
#if defined HAVE_PUTUTLINE
|
||||||
utmpname(UTMP_FILE);
|
utmpname(UTMP_FILE);
|
||||||
@ -141,13 +145,15 @@ static void cleanup_utmp(void)
|
|||||||
{
|
{
|
||||||
#ifndef OMIT_UTMP
|
#ifndef OMIT_UTMP
|
||||||
FILE *wtmp;
|
FILE *wtmp;
|
||||||
|
time_t uttime;
|
||||||
|
|
||||||
if (!pty_stamped_utmp)
|
if (!pty_stamped_utmp)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
utmp_entry.ut_type = DEAD_PROCESS;
|
utmp_entry.ut_type = DEAD_PROCESS;
|
||||||
memset(utmp_entry.ut_user, 0, lenof(utmp_entry.ut_user));
|
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) {
|
if ((wtmp = fopen(WTMP_FILE, "a")) != NULL) {
|
||||||
fwrite(&utmp_entry, 1, sizeof(utmp_entry), wtmp);
|
fwrite(&utmp_entry, 1, sizeof(utmp_entry), wtmp);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user