Mailing List Archive

Patch to make pre19 work with NetBSD
The pre19 code assumes that struct lastlog either exists in lastlog.h or
isn't there. On NetBSD, struct lastlog is defined in utmp.h. Even worse,
the non-lastlog code in login.h is terrible on NetBSD (since NetBSD
doesn't have a ut_type struct member).

With the patch below, openssh will compile and run on NetBSD again.

Thanks,
David


--- configure.orig Tue Dec 21 06:51:22 1999
+++ configure Thu Dec 23 14:15:16 1999
@@ -2073,12 +2073,43 @@
fi
rm -f conftest*

-echo $ac_n "checking whether pam_strerror takes only one argument""... $ac_c" 1>&6
-echo "configure:2078: checking whether pam_strerror takes only one argument" >&5
+echo $ac_n "checking For struct lastlog in utmp.h""... $ac_c" 1>&6
+echo "configure:2078: checking For struct lastlog in utmp.h" >&5
cat > conftest.$ac_ext <<EOF
#line 2080 "configure"
#include "confdefs.h"

+ #include <sys/types.h>
+ #include <utmp.h>
+
+int main() {
+struct lastlog c; c.ll_time = 0;
+; return 0; }
+EOF
+if { (eval echo configure:2090: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+
+ cat >> confdefs.h <<\EOF
+#define HAVE_LASTLOG 1
+EOF
+
+ echo "$ac_t""yes" 1>&6
+
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ echo "$ac_t""no" 1>&6
+
+fi
+rm -f conftest*
+
+echo $ac_n "checking whether pam_strerror takes only one argument""... $ac_c" 1>&6
+echo "configure:2109: checking whether pam_strerror takes only one argument" >&5
+cat > conftest.$ac_ext <<EOF
+#line 2111 "configure"
+#include "confdefs.h"
+
#include <stdlib.h>
#include <security/pam_appl.h>

--- config.h.in.orig Thu Dec 23 13:50:18 1999
+++ config.h.in Thu Dec 23 13:59:23 1999
@@ -148,6 +148,9 @@
/* Define if you have the <lastlog.h> header file. */
#undef HAVE_LASTLOG_H

+/* Define if you don't have the <lastlog.h> header file but have lastlog. */
+#undef HAVE_LASTLOG
+
/* Define if you have the <login.h> header file. */
#undef HAVE_LOGIN_H

@@ -405,3 +408,7 @@
#if !defined(HAVE_SETEUID) && defined(HAVE_SETREUID)
# define seteuid(a) setreuid(-1,a)
#endif /* !defined(HAVE_SETEUID) && defined(HAVE_SETREUID) */
+
+#if defined(HAVE_LASTLOG_H) && !defined(HAVE_LASTLOG)
+# define HAVE_LASTLOG
+#endif /* defined (HAVE_LASTLOG_H) && !defined(HAVE_LASTLOG) */
--- login.c.orig Thu Dec 23 13:34:04 1999
+++ login.c Thu Dec 23 13:40:37 1999
@@ -53,7 +53,7 @@
get_last_login_time(uid_t uid, const char *logname,
char *buf, unsigned int bufsize)
{
-#if defined(HAVE_LASTLOG_H) && !defined(DISABLE_LASTLOG)
+#if defined(HAVE_LASTLOG) && !defined(DISABLE_LASTLOG)
struct lastlog ll;
char *lastlog;
int fd;
--- configure.in.orig Thu Dec 23 13:41:02 1999
+++ configure.in Thu Dec 23 13:48:33 1999
@@ -151,6 +151,18 @@
[AC_MSG_RESULT(no)]
)

+dnl On NetBSD (at least), lastlog is in utmp.h
+AC_MSG_CHECKING([For struct lastlog in utmp.h])
+AC_TRY_COMPILE(
+ [#include <utmp.h>],
+ [struct lastlog c; c.ll_time = 0;],
+ [
+ AC_DEFINE(HAVE_LASTLOG)
+ AC_MSG_RESULT(yes)
+ ],
+ [AC_MSG_RESULT(no)]
+)
+
dnl Check PAM strerror arguments
AC_MSG_CHECKING([whether pam_strerror takes only one argument])
AC_TRY_COMPILE(