From daaff4d53553094be41dbb3c90a19da8906020d0 Mon Sep 17 00:00:00 2001 From: djm Date: Sat, 1 Jul 2000 03:17:42 +0000 Subject: [PATCH] - (djm) Login fixes from Tom Bertelson --- ChangeLog | 1 + acconfig.h | 1 + configure.in | 1 + loginrec.c | 15 ++++++++++++--- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1d47d6c3..06ed24d5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,6 @@ 20000701 - (djm) Fix Tru64 SIA problems reported by John P Speno + - (djm) Login fixes from Tom Bertelson 20000628 - (djm) Fixes to lastlog code for Irix diff --git a/acconfig.h b/acconfig.h index 6f375212..f10370df 100644 --- a/acconfig.h +++ b/acconfig.h @@ -57,6 +57,7 @@ #undef HAVE_TV_IN_UTMP #undef HAVE_TV_IN_UTMPX #undef HAVE_ID_IN_UTMP +#undef HAVE_ID_IN_UTMPX #undef HAVE_EXIT_IN_UTMP #undef HAVE_TIME_IN_UTMP #undef HAVE_TIME_IN_UTMPX diff --git a/configure.in b/configure.in index 4dd08c71..8e155f26 100644 --- a/configure.in +++ b/configure.in @@ -636,6 +636,7 @@ OSSH_CHECK_HEADER_FOR_FIELD(ut_type, utmp.h, HAVE_TYPE_IN_UTMP) OSSH_CHECK_HEADER_FOR_FIELD(ut_type, utmpx.h, HAVE_TYPE_IN_UTMPX) OSSH_CHECK_HEADER_FOR_FIELD(ut_tv, utmp.h, HAVE_TV_IN_UTMP) OSSH_CHECK_HEADER_FOR_FIELD(ut_id, utmp.h, HAVE_ID_IN_UTMP) +OSSH_CHECK_HEADER_FOR_FIELD(ut_id, utmpx.h, HAVE_ID_IN_UTMPX) OSSH_CHECK_HEADER_FOR_FIELD(ut_addr, utmp.h, HAVE_ADDR_IN_UTMP) OSSH_CHECK_HEADER_FOR_FIELD(ut_addr, utmpx.h, HAVE_ADDR_IN_UTMPX) OSSH_CHECK_HEADER_FOR_FIELD(ut_addr_v6, utmp.h, HAVE_ADDR_V6_IN_UTMP) diff --git a/loginrec.c b/loginrec.c index 384136e5..c286a449 100644 --- a/loginrec.c +++ b/loginrec.c @@ -535,11 +535,18 @@ line_abbrevname(char *dst, const char *src, int dstsize) memset(dst, '\0', dstsize); + /* Always skip prefix if present */ + if (strncmp(src, "/dev/", 5) == 0) + src += 5; + len = strlen(src); - if (len <= 0) { - src += (len - dstsize); - strncpy(dst, src, dstsize); /* note: _don't_ change this to strlcpy */ + if (len > 0) { + if (((int)len - dstsize) > 0) + src += ((int)len - dstsize); + + /* note: _don't_ change this to strlcpy */ + strncpy(dst, src, (size_t)dstsize); } return dst; @@ -647,7 +654,9 @@ void construct_utmpx(struct logininfo *li, struct utmpx *utx) { memset(utx, '\0', sizeof(struct utmpx)); +# ifdef HAVE_ID_IN_UTMPX line_abbrevname(utx->ut_id, li->line, sizeof(utx->ut_id)); +# endif /* this is done here to keep utmp constants out of loginrec.h */ switch (li->type) { -- 2.45.2