From 0aeb000d7b639a795509879713400096030809b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dag-Erling=20Sm=C3=B8rgrav?= Date: Tue, 21 Oct 2008 11:58:26 +0000 Subject: [PATCH] At some point, construct_utmp() was changed to use realhostname() to fill in the struct utmp due to concerns about the length of the hostname buffer. However, this breaks the UseDNS option. There is a simpler and better solution: initialize utmp_len to the correct value (UT_HOSTSIZE instead of MAXHOSTNAMELEN) and let get_remote_name_or_ip() worry about the size of the buffer. PR: bin/97499 Submitted by: Bruce Cran MFC after: 1 week --- crypto/openssh/loginrec.c | 5 ++--- crypto/openssh/sshd.c | 3 ++- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/crypto/openssh/loginrec.c b/crypto/openssh/loginrec.c index 6d901601ed66..b41114198721 100644 --- a/crypto/openssh/loginrec.c +++ b/crypto/openssh/loginrec.c @@ -146,7 +146,6 @@ */ #include "includes.h" -__RCSID("$FreeBSD$"); #include #include @@ -689,8 +688,8 @@ construct_utmp(struct logininfo *li, strncpy(ut->ut_name, li->username, MIN_SIZEOF(ut->ut_name, li->username)); # ifdef HAVE_HOST_IN_UTMP - realhostname_sa(ut->ut_host, sizeof ut->ut_host, - &li->hostaddr.sa, li->hostaddr.sa.sa_len); + strncpy(ut->ut_host, li->hostname, + MIN_SIZEOF(ut->ut_host, li->hostname)); # endif # ifdef HAVE_ADDR_IN_UTMP /* this is just a 32-bit IP address */ diff --git a/crypto/openssh/sshd.c b/crypto/openssh/sshd.c index 901615dfe792..7ecad75d99b4 100644 --- a/crypto/openssh/sshd.c +++ b/crypto/openssh/sshd.c @@ -72,6 +72,7 @@ __RCSID("$FreeBSD$"); #include #include #include +#include #include #include @@ -238,7 +239,7 @@ u_char *session_id2 = NULL; u_int session_id2_len = 0; /* record remote hostname or ip */ -u_int utmp_len = MAXHOSTNAMELEN; +u_int utmp_len = UT_HOSTSIZE; /* options.max_startup sized array of fd ints */ int *startup_pipes = NULL;