aboutsummaryrefslogtreecommitdiff
path: root/crypto
diff options
context:
space:
mode:
authorBrian Somers <brian@FreeBSD.org>1999-04-06 12:41:27 +0000
committerBrian Somers <brian@FreeBSD.org>1999-04-06 12:41:27 +0000
commit3bfc6c798d9441aadc8b926391d8c0e6511f49f8 (patch)
treec8931a71cd7b7ca720fed8993307a8b6dd6aa64d /crypto
parent3e6a56bb87d4875b898751e36fe6f5cd378b0d0a (diff)
downloadsrc-3bfc6c798d9441aadc8b926391d8c0e6511f49f8.tar.gz
src-3bfc6c798d9441aadc8b926391d8c0e6511f49f8.zip
MF src/libexec/telnetd: Verify the reverse DNS lookup
ala rlogind. Suggested by: markm
Notes
Notes: svn path=/head/; revision=45377
Diffstat (limited to 'crypto')
-rw-r--r--crypto/telnet/telnetd/telnetd.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/crypto/telnet/telnetd/telnetd.c b/crypto/telnet/telnetd/telnetd.c
index acbf3a840dd2..b869dca4a814 100644
--- a/crypto/telnet/telnetd/telnetd.c
+++ b/crypto/telnet/telnetd/telnetd.c
@@ -42,7 +42,7 @@ static const char copyright[] =
static const char sccsid[] = "@(#)telnetd.c 8.4 (Berkeley) 5/30/95";
#endif
static const char rcsid[] =
- "$Id: telnetd.c,v 1.4 1998/02/16 12:09:27 markm Exp $";
+ "$Id: telnetd.c,v 1.5 1998/12/16 06:06:06 peter Exp $";
#endif /* not lint */
#include "telnetd.h"
@@ -869,7 +869,23 @@ doit(who)
} else if (hp &&
(strlen(hp->h_name) <= (unsigned int)((utmp_len < 0) ? -utmp_len
: utmp_len))) {
- host = hp->h_name;
+ strncpy(remote_host_name, hp->h_name,
+ sizeof(remote_host_name)-1);
+ hp = gethostbyname(remote_host_name);
+ if (hp == NULL)
+ host = inet_ntoa(who->sin_addr);
+ else for (; ; hp->h_addr_list++) {
+ if (hp->h_addr_list[0] == NULL) {
+ /* End of list - ditch it */
+ host = inet_ntoa(who->sin_addr);
+ break;
+ }
+ if (!bcmp(hp->h_addr_list[0], (caddr_t)&who->sin_addr,
+ sizeof(who->sin_addr))) {
+ host = hp->h_name;
+ break; /* OK! */
+ }
+ }
} else {
host = inet_ntoa(who->sin_addr);
}