Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 01 Aug 2002 16:39:45 +0900
From:      Hajimu UMEMOTO <ume@mahoroba.org>
To:        des@FreeBSD.org
Cc:        current@FreeBSD.org, stable@FreeBSD.org
Subject:   sshd doesn't log hostname into utmp correctly
Message-ID:  <yge3ctzjada.wl@lyrics.mahoroba.org>

next in thread | raw e-mail | index | archive | help
--Multipart_Thu_Aug__1_16:39:45_2002-1
Content-Type: text/plain; charset=US-ASCII

Hi,

Current sshd doesn't handle actual size of struct sockaddr correctly,
and does copy it as long as just size of struct sockaddr.  So, sshd
deesn't log hostname into utmp correctly.
Here is a proposed patch to fix this problem.  Please review it.

Sincerely,


--Multipart_Thu_Aug__1_16:39:45_2002-1
Content-Type: text/x-patch; type=patch; charset=US-ASCII
Content-Disposition: attachment; filename="sshd-loghost.diff"
Content-Transfer-Encoding: 7bit

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	Thu Aug  1 15:21:58 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	Sun Jul 28 00:43:29 2002
+++ crypto/openssh/session.c	Thu Aug  1 15:22:21 2002
@@ -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 Jul 13 12:53:57 2002
+++ crypto/openssh/sshlogin.c	Thu Aug  1 15:24:36 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);
 }
Index: crypto/openssh/sshlogin.h
diff -u crypto/openssh/sshlogin.h.orig crypto/openssh/sshlogin.h
--- crypto/openssh/sshlogin.h.orig	Sat Jul 13 12:53:57 2002
+++ crypto/openssh/sshlogin.h	Thu Aug  1 15:26:40 2002
@@ -16,7 +16,7 @@
 
 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);
 

--Multipart_Thu_Aug__1_16:39:45_2002-1
Content-Type: text/plain; charset=US-ASCII

--
Hajimu UMEMOTO @ Internet Mutual Aid Society Yokohama, Japan
ume@mahoroba.org  ume@bisd.hitachi.co.jp  ume@{,jp.}FreeBSD.org
http://www.imasy.org/~ume/

--Multipart_Thu_Aug__1_16:39:45_2002-1--

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-stable" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?yge3ctzjada.wl>