From owner-FreeBSD-users-jp@jp.FreeBSD.org Mon Aug 19 17:44:23 2002
Received: (from daemon@localhost)
	by castle.jp.FreeBSD.org (8.11.6+3.4W/8.11.3) id g7J8iNu60692;
	Mon, 19 Aug 2002 17:44:23 +0900 (JST)
	(envelope-from owner-FreeBSD-users-jp@jp.FreeBSD.org)
Received: from cheer.mahoroba.org (cheer.mahoroba.org [2001:200:301:0:240:c7ff:fe97:6f89])
	by castle.jp.FreeBSD.org (8.11.6+3.4W/8.11.3) with ESMTP/inet6 id g7J8iK360682
	for <FreeBSD-users-jp@jp.FreeBSD.org>; Mon, 19 Aug 2002 17:44:20 +0900 (JST)
	(envelope-from ume@mahoroba.org)
Received: from localhost (IDENT:hmQ+KuK3AhcsIMNwYJsaAfyJv80mjRVmToxWPaWaOHaGRI0hDz8+94H7iKSLSeWw@localhost [IPv6:::1])
	(user=ume mech=CRAM-MD5 bits=0)
	by cheer.mahoroba.org (8.12.5/8.12.5) with ESMTP/inet6 id g7J8hPbQ072537
	(version=TLSv1/SSLv3 cipher=EDH-RSA-DES-CBC3-SHA bits=168 verify=NO)
	for <FreeBSD-users-jp@jp.FreeBSD.org>; Mon, 19 Aug 2002 17:44:08 +0900 (JST)
	(envelope-from ume@mahoroba.org)
Message-ID: <yge7kini6he.wl@cheer.mahoroba.org>
From: Hajimu UMEMOTO <ume@mahoroba.org>
To: FreeBSD-users-jp@jp.FreeBSD.org
In-Reply-To: <20020819.160855.115941650.ishizuka@ish.org>
References: <20020819.160855.115941650.ishizuka@ish.org>
User-Agent: xcite1.38> Wanderlust/2.9.13 (Unchained Melody) SEMI/1.14.4
 (Hosorogi) FLIM/1.14.3 (=?ISO-8859-4?Q?Unebigory=F2mae?=) APEL/10.3
 Emacs/21.2 (i386--freebsd) MULE/5.0 (=?ISO-2022-JP?B?GyRCOC1MWhsoQg==?=)
X-Operating-System: FreeBSD 4.6-STABLE
MIME-Version: 1.0 (generated by SEMI 1.14.4 - "Hosorogi")
Content-Type: text/plain; charset=ISO-2022-JP
X-Virus-Scanned: by AMaViS-perl11-milter (http://amavis.org/)
Reply-To: FreeBSD-users-jp@jp.FreeBSD.org
Precedence: list
Date: Mon, 19 Aug 2002 17:43:25 +0900
X-Sequence: FreeBSD-users-jp 70273
Subject: [FreeBSD-users-jp 70273] Re: UT_HOSTSIZE for wtmp
Errors-To: owner-FreeBSD-users-jp@jp.FreeBSD.org
Sender: owner-FreeBSD-users-jp@jp.FreeBSD.org
X-Originator: ume@mahoroba.org
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+020815

  $BG_K\!w(BIMASY$B$G$9!#(B

>>>>> On Mon, 19 Aug 2002 16:08:55 +0900
>>>>> Masachika ISHIZUKA <ishizuka@ish.org> said:

ishizuka>   wtmp $B$N(B UT_HOSTSIZE $B$G$9$,!"(Butmp.h $B$G(B 16 $B$HDj5A$5$l$F$$$k$?(B
ishizuka> $B$a$K(B

ishizuka> | % last | head -1
ishizuka> | ishizuka     ttyp4    2001:3d8:0:4f0:: Mon Aug 19 16:04   still logged in
ishizuka>                         ~~~~~~~~~~~~~~~~
ishizuka> $BE*$JI=<($K$J$C$F$7$^$$!"$I$3$+$i%m%0%$%s$7$?$N$+A4A36hJL$,IU(B
ishizuka> $B$+$J$$>uBV$G$9!#(B
ishizuka>   $BC/$+$3$l$r3HBg$9$k$h$&$KF0$$$F$/$l$J$$$G$7$g$&$+!#(B

  utmpx $B$rF3F~$9$kJ}8~$G(B 5-CURRENT $B$G$O<BAu$,?J$s$G$$$^$9!#%P%$%J%j8_(B
$B49@-$NLdBj$H$+$,$"$j!"$^$@(B commit $B$O$5$l$F$$$^$;$s$1$I!#(B

ishizuka> $B!t(B 4.6R $B$N;~$O!"(BDNS $B$r0z$$$F(B FQDN $B$G=q$-9~$^$l$F$$$?$N$K!"(B4.6.2R
ishizuka>   $B$K$7$?$i2?8N$+(B IP $B%"%I%l%9D>=q$-$K$J$C$F$7$^$C$?$N$G!"A4$/(B
ishizuka>   $B<1JL$G$-$J$/$J$C$F:$$C$F$$$^$9!#(B

  $B$*$=$i$/(B ssh $B$G$NOC$H;W$$$^$9$,!"$3$l$O(B OpenSSH $B$N%P%0$G$9!#(Bssh-dev 
$B$KAw$C$F$"$k%Q%C%A$rIU$1$F$*$-$^$9!#(B

Index: crypto/openssh/monitor.c
diff -u crypto/openssh/monitor.c.orig crypto/openssh/monitor.c
--- crypto/openssh/monitor.c.orig	Thu Jul 11 08:04:07 2002
+++ crypto/openssh/monitor.c	Sun Aug 11 00:39:53 2002
@@ -1113,8 +1113,8 @@
 	 * the address be 0.0.0.0.
 	 */
 	memset(&from, 0, sizeof(from));
+	fromlen = sizeof(from);
 	if (packet_connection_is_on_socket()) {
-		fromlen = sizeof(from);
 		if (getpeername(packet_get_connection_in(),
 			(struct sockaddr *) & from, &fromlen) < 0) {
 			debug("getpeername: %.100s", strerror(errno));
@@ -1124,7 +1124,7 @@
 	/* Record that there was a login on that tty from the remote host. */
 	record_login(s->pid, s->tty, pw->pw_name, pw->pw_uid,
 	    get_remote_name_or_ip(utmp_len, options.verify_reverse_mapping),
-	    (struct sockaddr *)&from);
+	    (struct sockaddr *)&from, fromlen);
 }
 
 static void
Index: crypto/openssh/session.c
diff -u crypto/openssh/session.c.orig crypto/openssh/session.c
--- crypto/openssh/session.c.orig	Tue Aug  6 01:06:35 2002
+++ crypto/openssh/session.c	Sun Aug 11 00:39:53 2002
@@ -669,8 +669,8 @@
 	 * the address be 0.0.0.0.
 	 */
 	memset(&from, 0, sizeof(from));
+	fromlen = sizeof(from);
 	if (packet_connection_is_on_socket()) {
-		fromlen = sizeof(from);
 		if (getpeername(packet_get_connection_in(),
 		    (struct sockaddr *) & from, &fromlen) < 0) {
 			debug("getpeername: %.100s", strerror(errno));
@@ -680,7 +680,7 @@
 
 	record_utmp_only(pid, s->tty, s->pw->pw_name,
 	    get_remote_name_or_ip(utmp_len, options.verify_reverse_mapping),
-	    (struct sockaddr *)&from);
+	    (struct sockaddr *)&from, fromlen);
 }
 #endif
 
@@ -721,8 +721,8 @@
 	 * the address be 0.0.0.0.
 	 */
 	memset(&from, 0, sizeof(from));
+	fromlen = sizeof(from);
 	if (packet_connection_is_on_socket()) {
-		fromlen = sizeof(from);
 		if (getpeername(packet_get_connection_in(),
 		    (struct sockaddr *) & from, &fromlen) < 0) {
 			debug("getpeername: %.100s", strerror(errno));
@@ -735,7 +735,7 @@
 		record_login(pid, s->tty, pw->pw_name, pw->pw_uid,
 		    get_remote_name_or_ip(utmp_len,
 		    options.verify_reverse_mapping),
-		    (struct sockaddr *)&from);
+		    (struct sockaddr *)&from, fromlen);
 
 #ifdef USE_PAM
 	/*
Index: crypto/openssh/sshlogin.c
diff -u crypto/openssh/sshlogin.c.orig crypto/openssh/sshlogin.c
--- crypto/openssh/sshlogin.c.orig	Sat Jun 29 20:48:59 2002
+++ crypto/openssh/sshlogin.c	Sun Aug 11 00:39:53 2002
@@ -66,12 +66,12 @@
  */
 void
 record_login(pid_t pid, const char *ttyname, const char *user, uid_t uid,
-    const char *host, struct sockaddr * addr)
+    const char *host, struct sockaddr * addr, socklen_t addrlen)
 {
   struct logininfo *li;
 
   li = login_alloc_entry(pid, user, host, ttyname);
-  login_set_addr(li, addr, sizeof(struct sockaddr));
+  login_set_addr(li, addr, addrlen);
   login_login(li);
   login_free_entry(li);
 }
@@ -79,12 +79,12 @@
 #ifdef LOGIN_NEEDS_UTMPX
 void
 record_utmp_only(pid_t pid, const char *ttyname, const char *user,
-		 const char *host, struct sockaddr * addr)
+		 const char *host, struct sockaddr * addr, socklen_t addrlen)
 {
   struct logininfo *li;
 
   li = login_alloc_entry(pid, user, host, ttyname);
-  login_set_addr(li, addr, sizeof(struct sockaddr));
+  login_set_addr(li, addr, addrlen);
   login_utmp_only(li);
   login_free_entry(li);
 }
Index: crypto/openssh/sshlogin.h
diff -u crypto/openssh/sshlogin.h.orig crypto/openssh/sshlogin.h
--- crypto/openssh/sshlogin.h.orig	Fri Jun 28 07:31:18 2002
+++ crypto/openssh/sshlogin.h	Sun Aug 11 00:39:53 2002
@@ -16,13 +16,13 @@
 
 void
 record_login(pid_t, const char *, const char *, uid_t,
-    const char *, struct sockaddr *);
+    const char *, struct sockaddr *, socklen_t);
 void   record_logout(pid_t, const char *, const char *);
 u_long         get_last_login_time(uid_t, const char *, char *, u_int);
 
 #ifdef LOGIN_NEEDS_UTMPX
 void	record_utmp_only(pid_t, const char *, const char *, const char *,
-		struct sockaddr *);
+		struct sockaddr *, socklen_t);
 #endif
 
 #endif

-- 
$BG_K\(B $BH%(B $B!w(B $B%$%s%?!<%M%C%H8_=u2q2#IM(B  http://www.imasy.org/~ume/
ume@mahoroba.org  ume@bisd.hitachi.co.jp  ume@{,jp.}FreeBSD.org
$B%W%m%0%i%`$O=q$$$??M$N0U?^$G$O$J$/=q$+$l$?DL$jF0$/(B  I hate Modula-3 :-)
