PrintLastLog fails on systems without lastlog but with utmpx
Ed Maste
emaste at freebsd.org
Thu May 19 04:13:31 AEST 2022
>From FreeBSD PR 209441. configure sets DISABLE_LASTLOG if we do not
have lastlog.ll_line:
AC_CHECK_MEMBER([struct lastlog.ll_line], [], [
if test x$SKIP_DISABLE_LASTLOG_DEFINE != "xyes" ; then
AC_DEFINE([DISABLE_LASTLOG])
fi
], [
However DISABLE_LASTLOG disables support for PrintLastLog altogether
-- from servconf.c:
#ifdef DISABLE_LASTLOG
{ "printlastlog", sUnsupported, SSHCFG_GLOBAL },
#else
{ "printlastlog", sPrintLastLog, SSHCFG_GLOBAL },
#endif
In getlast_entry() DISABLE_LASTLOG disables use of wtmp and wtmpx, but
not utmpx. DISABLE_LASTLOG seems to be intended to mean disable last
login functionality altogether, and disable use of specifically
utmp/lastlog, in different locations.
It seems like (for consistency with --disable-utmp, --disable-utmpx,
--disable-wtmp, --disable-wtmpx) DISABLE_LASTLOG should refer only to
lastlog specifically, not last login functionality in general. Thus,
servconf should probably be:
#if defined(DISABLE_LASTLOG) && defined(DISABLE_UTMP) &&
defined(DISABLE_UTMPX) &&...
{ "printlastlog", sUnsupported, SSHCFG_GLOBAL },
#else
{ "printlastlog", sPrintLastLog, SSHCFG_GLOBAL },
#endif
and getlast_entry() should move the wtmp/wtmpx cases out of
!defined(DISABLE_LASTLOG).
More information about the openssh-unix-dev
mailing list