svn commit: r184122 - head/crypto/openssh
Dag-Erling Smorgrav
des at FreeBSD.org
Tue Oct 21 11:58:27 UTC 2008
Author: des
Date: Tue Oct 21 11:58:26 2008
New Revision: 184122
URL: http://svn.freebsd.org/changeset/base/184122
Log:
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 <bruce at cran.org.uk>
MFC after: 1 week
Modified:
head/crypto/openssh/loginrec.c
head/crypto/openssh/sshd.c
Modified: head/crypto/openssh/loginrec.c
==============================================================================
--- head/crypto/openssh/loginrec.c Tue Oct 21 10:54:12 2008 (r184121)
+++ head/crypto/openssh/loginrec.c Tue Oct 21 11:58:26 2008 (r184122)
@@ -146,7 +146,6 @@
*/
#include "includes.h"
-__RCSID("$FreeBSD$");
#include <sys/types.h>
#include <sys/stat.h>
@@ -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 */
Modified: head/crypto/openssh/sshd.c
==============================================================================
--- head/crypto/openssh/sshd.c Tue Oct 21 10:54:12 2008 (r184121)
+++ head/crypto/openssh/sshd.c Tue Oct 21 11:58:26 2008 (r184122)
@@ -72,6 +72,7 @@ __RCSID("$FreeBSD$");
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
+#include <utmp.h>
#include <openssl/dh.h>
#include <openssl/bn.h>
@@ -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;
More information about the svn-src-all
mailing list