Flavio Cruz, le ven. 29 déc. 2023 16:20:59 -0500, a ecrit: > --- > utils/login.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/utils/login.c b/utils/login.c > index 3134c4a..3ed5121 100644 > --- a/utils/login.c > +++ b/utils/login.c > @@ -157,12 +157,17 @@ static void > add_utmp_entry (char *args, unsigned args_len, int inherit_host) > { > struct utmp utmp; > + struct timeval current_time; > char const *host = 0; > long addr = 0; > > memset (&utmp, 0, sizeof(utmp)); > > - gettimeofday (&utmp.ut_tv, 0); > + gettimeofday (¤t_time, 0); > + /* For x86_64, sizeof(utmp.ut_tv) != sizeof(struct timeval) */ > + utmp.ut_tv.tv_sec = (int32_t) current_time.tv_sec; > + utmp.ut_tv.tv_usec = (int32_t) current_time.tv_usec;
I don't think we want to explicitly cast? Glibc's utmp has a #if/#else that possibly makes it use timeval. > + > strncpy (utmp.ut_name, envz_get (args, args_len, "USER") ?: "", > sizeof (utmp.ut_name));