ports/93164: openssh-portable does not record session correctly.

Tsurutani Naoki turutani at scphys.kyoto-u.ac.jp
Sat Feb 11 03:00:21 UTC 2006


>Number:         93164
>Category:       ports
>Synopsis:       openssh-portable does not record session correctly.
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sat Feb 11 03:00:18 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator:     Tsurutani Naoki
>Release:        FreeBSD 5.4-STABLE i386
>Organization:
>Environment:
System: FreeBSD polymer3.scphys.kyoto-u.ac.jp 5.4-STABLE FreeBSD 5.4-STABLE #16: Wed Jan 18 18:03:11 JST 2006 turutani at polymer3.scphys.kyoto-u.ac.jp:/usr/local/work/usr/obj/usr/src/sys/POLYMER i386


	
>Description:
	login using openssh-portable is not recorded correctly.
	after login, running w return :
	% w
	 8:13AM  up 23 days, 13:54, 1 user, load averages: 0.01, 0.01, 0.01
	USER             TTY      FROM              LOGIN@  IDLE WHAT
	turutani         p0       -                01 170      - w

	
>How-To-Repeat:
	login through sshd.
	
>Fix:
	catch-up to openssh-SNAP-20060211 etc.
	here is a patch extracted:
	--- config.h.in.orig   Wed Feb  1 20:33:49 2006
	+++ config.h.in       Fri Feb 10 22:01:01 2006
	@@ -536,12 +536,6 @@
	 /* Define to 1 if you have the <netgroup.h> header file. */
	 #undef HAVE_NETGROUP_H
	
	-/* Define to 1 if you have the <netinet/in_systm.h> header file. */
	-#undef HAVE_NETINET_IN_SYSTM_H
	-
	-/* Define to 1 if you have the <net/if.h> header file. */
	-#undef HAVE_NET_IF_H
	-
	 /* Define if you are on NeXT */
	 #undef HAVE_NEXT
	
	@@ -1086,7 +1080,7 @@
	 #undef MISSING_NFDBITS
	
	 /* Need setpgrp to acquire controlling tty */
	-#undef NEED_SETPRGP
	+#undef NEED_SETPGRP
	
	 /* Define if the concept of ports only accessible to superusers isn't known */
	 #undef NO_IPPORT_RESERVED_CONCEPT
	--- configure.orig     Sat Feb 11 10:17:19 2006
	+++ configure Fri Feb 10 22:00:58 2006
	@@ -311,7 +311,7 @@
	 # include <unistd.h>
	 #endif"
	
	-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT build build_cpu build_vendor build_os host host_cpu host_vendor host_os AWK CPP RANLIB ac_ct_RANLIB INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA AR CAT KILL PERL SED ENT TEST_MINUS_S_SH SH TEST_SHELL PATH_GROUPADD_PROG PATH_USERADD_PROG MAKE_PACKAGE_SUPPORTED STARTUP_SCRIPT_SHELL LOGIN_PROGRAM_FALLBACK PATH_PASSWD_PROG LD EGREP LIBWRAP LIBEDIT LIBPAM INSTALL_SSH_RAND_HELPER SSH_PRIVSEP_USER PROG_LS PROG_NETSTAT PROG_ARP PROG_IFCONFIG PROG_JSTAT PROG_PS PROG_SAR PROG_W PROG_WHO PROG_LAST PROG_LASTLOG PROG_DF PROG_VMSTAT PROG_UPTIME PROG_IPCS PROG_TAIL INSTALL_SSH_PRNG_CMDS OPENSC_CONFIG P!
 RIVSEP_PATH xauth_path STRIP_OPT XAUTH_PATH NROFF MANTYPE mansubdir user_path piddir LIBOBJS LTLIBOBJS'
	+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT build build_cpu build_vendor build_os host host_cpu host_vendor host_os AWK CPP RANLIB ac_ct_RANLIB INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA EGREP AR CAT KILL PERL SED ENT TEST_MINUS_S_SH SH TEST_SHELL PATH_GROUPADD_PROG PATH_USERADD_PROG MAKE_PACKAGE_SUPPORTED STARTUP_SCRIPT_SHELL LOGIN_PROGRAM_FALLBACK PATH_PASSWD_PROG LD LIBWRAP LIBEDIT LIBPAM INSTALL_SSH_RAND_HELPER SSH_PRIVSEP_USER PROG_LS PROG_NETSTAT PROG_ARP PROG_IFCONFIG PROG_JSTAT PROG_PS PROG_SAR PROG_W PROG_WHO PROG_LAST PROG_LASTLOG PROG_DF PROG_VMSTAT PROG_UPTIME PROG_IPCS PROG_TAIL INSTALL_SSH_PRNG_CMDS OPENSC_CONFIG P!
 RIVSEP_PATH xauth_path STRIP_OPT XAUTH_PATH NROFF MANTYPE mansubdir user_path piddir LIBOBJS LTLIBOBJS'
	 ac_subst_files=''
	
	 # Initialize some variables set by options.
	@@ -3036,6 +3036,21 @@
	
	 test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
	
	+echo "$as_me:$LINENO: checking for egrep" >&5
	+echo $ECHO_N "checking for egrep... $ECHO_C" >&6
	+if test "${ac_cv_prog_egrep+set}" = set; then
	+  echo $ECHO_N "(cached) $ECHO_C" >&6
	+else
	+  if echo a | (grep -E '(a|b)') >/dev/null 2>&1
	+    then ac_cv_prog_egrep='grep -E'
	+    else ac_cv_prog_egrep='egrep'
	+    fi
	+fi
	+echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
	+echo "${ECHO_T}$ac_cv_prog_egrep" >&6
	+ EGREP=$ac_cv_prog_egrep
	+
	+
	 # Extract the first word of "ar", so it can be a program name with args.
	 set dummy ar; ac_word=$2
	 echo "$as_me:$LINENO: checking for $ac_word" >&5
	@@ -5640,21 +5656,6 @@
		esac
		# tun(4) forwarding compat code
	
	-echo "$as_me:$LINENO: checking for egrep" >&5
	-echo $ECHO_N "checking for egrep... $ECHO_C" >&6
	-if test "${ac_cv_prog_egrep+set}" = set; then
	-  echo $ECHO_N "(cached) $ECHO_C" >&6
	-else
	-  if echo a | (grep -E '(a|b)') >/dev/null 2>&1
	-    then ac_cv_prog_egrep='grep -E'
	-    else ac_cv_prog_egrep='egrep'
	-    fi
	-fi
	-echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5
	-echo "${ECHO_T}$ac_cv_prog_egrep" >&6
	- EGREP=$ac_cv_prog_egrep
	-
	-
	 echo "$as_me:$LINENO: checking for ANSI C header files" >&5
	 echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
	 if test "${ac_cv_header_stdc+set}" = set; then
	@@ -6064,7 +6065,7 @@
	 mips-sony-bsd|mips-sony-newsos4)
	
	 cat >>confdefs.h <<\_ACEOF
	-#define NEED_SETPRGP 1
	+#define NEED_SETPGRP 1
	 _ACEOF
	
		SONY=1
	@@ -7207,7 +7208,7 @@
	
		;;
	
	-*-*-nto-qnx)
	+*-*-nto-qnx*)
		cat >>confdefs.h <<\_ACEOF
	 #define USE_PIPES 1
	 _ACEOF
	@@ -7231,6 +7232,10 @@
	 #define MISSING_FD_MASK 1
	 _ACEOF
	
	+	cat >>confdefs.h <<\_ACEOF
	+#define DISABLE_LASTLOG 1
	+_ACEOF
	+
		;;
	
	 *-*-ultrix*)
	@@ -7245,7 +7250,7 @@
	 _ACEOF
	
		cat >>confdefs.h <<\_ACEOF
	-#define NEED_SETPRGP 1
	+#define NEED_SETPGRP 1
	 _ACEOF
	
	
	@@ -7451,16 +7453,13 @@
		glob.h \
		ia.h \
		iaf.h \
	-	lastlog.h \
		limits.h \
		login.h \
		login_cap.h \
		maillock.h \
		ndir.h \
	-	net/if.h \
		netdb.h \
		netgroup.h \
	-	netinet/in_systm.h \
		pam/pam_appl.h \
		paths.h \
		pty.h \
	@@ -7650,6 +7649,73 @@
	 done
	
	
	+# lastlog.h requires sys/time.h to be included first on Solaris
	+
	+for ac_header in lastlog.h
	+do
	+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
	+echo "$as_me:$LINENO: checking for $ac_header" >&5
	+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
	+if eval "test \"\${$as_ac_Header+set}\" = set"; then
	+  echo $ECHO_N "(cached) $ECHO_C" >&6
	+else
	+  cat >conftest.$ac_ext <<_ACEOF
	+/* confdefs.h.  */
	+_ACEOF
	+cat confdefs.h >>conftest.$ac_ext
	+cat >>conftest.$ac_ext <<_ACEOF
	+/* end confdefs.h.  */
	+
	+#ifdef HAVE_SYS_TIME_H
	+# include <sys/time.h>
	+#endif
	+
	+
	+#include <$ac_header>
	+_ACEOF
	+rm -f conftest.$ac_objext
	+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
	+  (eval $ac_compile) 2>conftest.er1
	+  ac_status=$?
	+  grep -v '^ *+' conftest.er1 >conftest.err
	+  rm -f conftest.er1
	+  cat conftest.err >&5
	+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
	+  (exit $ac_status); } &&
	+        { ac_try='test -z "$ac_c_werror_flag"
	+                        || test ! -s conftest.err'
	+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
	+  (eval $ac_try) 2>&5
	+  ac_status=$?
	+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
	+  (exit $ac_status); }; } &&
	+        { ac_try='test -s conftest.$ac_objext'
	+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
	+  (eval $ac_try) 2>&5
	+  ac_status=$?
	+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
	+  (exit $ac_status); }; }; then
	+  eval "$as_ac_Header=yes"
	+else
	+  echo "$as_me: failed program was:" >&5
	+sed 's/^/| /' conftest.$ac_ext >&5
	+
	+eval "$as_ac_Header=no"
	+fi
	+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
	+fi
	+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
	+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
	+if test `eval echo '${'$as_ac_Header'}'` = yes; then
	+  cat >>confdefs.h <<_ACEOF
	+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
	+_ACEOF
	+
	+fi
	+
	+done
	+
	+
	 # sys/ptms.h requires sys/stream.h to be included first on Solaris
	
	 for ac_header in sys/ptms.h
	@@ -15093,7 +15159,7 @@
	
	 #include <string.h>
	 #include <openssl/evp.h>
	-int main(void) { exit(EVP_aes_192_cbc() == NULL || EVP_aes_256_cbc() == NULL)}
	+int main(void) { exit(EVP_aes_192_cbc() == NULL || EVP_aes_256_cbc() == NULL);}
	
	 _ACEOF
	 rm -f conftest.$ac_objext
	@@ -27440,6 +27506,7 @@
	 s, at INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
	 s, at INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
	 s, at INSTALL_DATA@,$INSTALL_DATA,;t t
	+s, at EGREP@,$EGREP,;t t
	 s, at AR@,$AR,;t t
	 s, at CAT@,$CAT,;t t
	 s, at KILL@,$KILL,;t t
	@@ -27456,7 +27524,6 @@
	 s, at LOGIN_PROGRAM_FALLBACK@,$LOGIN_PROGRAM_FALLBACK,;t t
	 s, at PATH_PASSWD_PROG@,$PATH_PASSWD_PROG,;t t
	 s, at LD@,$LD,;t t
	-s, at EGREP@,$EGREP,;t t
	 s, at LIBWRAP@,$LIBWRAP,;t t
	 s, at LIBEDIT@,$LIBEDIT,;t t
	 s, at LIBPAM@,$LIBPAM,;t t
	--- configure.ac.orig  Sat Feb 11 09:53:22 2006
	+++ configure.ac      Wed Feb  8 20:11:28 2006
	@@ -344,7 +344,7 @@
		fi
		;;
	 mips-sony-bsd|mips-sony-newsos4)
	-	AC_DEFINE(NEED_SETPRGP, 1, [Need setpgrp to acquire controlling tty])
	+	AC_DEFINE(NEED_SETPGRP, 1, [Need setpgrp to acquire controlling tty])
		SONY=1
		;;
	 *-*-netbsd*)
	@@ -576,18 +576,19 @@
		AC_DEFINE(BROKEN_SETREGID)
		;;
	
	-*-*-nto-qnx)
	+*-*-nto-qnx*)
		AC_DEFINE(USE_PIPES)
		AC_DEFINE(NO_X11_UNIX_SOCKETS)
		AC_DEFINE(MISSING_NFDBITS, 1, [Define on *nto-qnx systems])
		AC_DEFINE(MISSING_HOWMANY, 1, [Define on *nto-qnx systems])
		AC_DEFINE(MISSING_FD_MASK, 1, [Define on *nto-qnx systems])
	+	AC_DEFINE(DISABLE_LASTLOG)
		;;
	
	 *-*-ultrix*)
		AC_DEFINE(BROKEN_GETGROUPS, 1, [getgroups(0,NULL) will return -1])
		AC_DEFINE(BROKEN_MMAP, 1, [Ultrix mmap can't map files])
	-	AC_DEFINE(NEED_SETPRGP)
	+	AC_DEFINE(NEED_SETPGRP)
		AC_DEFINE(HAVE_SYS_SYSLOG_H, 1, [Force use of sys/syslog.h on Ultrix])
		;;
	
	@@ -673,16 +674,13 @@
		glob.h \
		ia.h \
		iaf.h \
	-	lastlog.h \
		limits.h \
		login.h \
		login_cap.h \
		maillock.h \
		ndir.h \
	-	net/if.h \
		netdb.h \
		netgroup.h \
	-	netinet/in_systm.h \
		pam/pam_appl.h \
		paths.h \
		pty.h \
	@@ -724,6 +722,13 @@
		vis.h \
	 )
	
	+# lastlog.h requires sys/time.h to be included first on Solaris
	+AC_CHECK_HEADERS(lastlog.h, [], [], [
	+#ifdef HAVE_SYS_TIME_H
	+# include <sys/time.h>
	+#endif
	+])
	+
	 # sys/ptms.h requires sys/stream.h to be included first on Solaris
	 AC_CHECK_HEADERS(sys/ptms.h, [], [], [
	 #ifdef HAVE_SYS_STREAM_H
	@@ -1833,7 +1838,7 @@
		[AC_LANG_SOURCE([[
	 #include <string.h>
	 #include <openssl/evp.h>
	-int main(void) { exit(EVP_aes_192_cbc() == NULL || EVP_aes_256_cbc() == NULL)}
	+int main(void) { exit(EVP_aes_192_cbc() == NULL || EVP_aes_256_cbc() == NULL);}
		]])],
		[
			AC_MSG_RESULT(no)
	--- session.c.orig     Sat Dec 24 12:59:12 2005
	+++ session.c Wed Feb  8 08:17:44 2006
	@@ -2176,7 +2176,6 @@
	
		/* disconnect channel */
		debug("session_exit_message: release channel %d", s->chanid);
	-	s->pid = 0;
	
		/*
		 * Adjust cleanup callback attachment to send close messages when
	@@ -2238,6 +2237,7 @@
			session_exit_message(s, status);
		if (s->ttyfd != -1)
			session_pty_cleanup(s);
	+	s->pid = 0;
	 }
	
	 /*

	putting this as files/pacth-wtmp can solve this problem, as i confirmed.
	


>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the freebsd-ports-bugs mailing list