summaryrefslogtreecommitdiff
path: root/usr.bin/ssh
diff options
context:
space:
mode:
authorMarkus Friedl <markus@cvs.openbsd.org>2002-03-01 13:12:11 +0000
committerMarkus Friedl <markus@cvs.openbsd.org>2002-03-01 13:12:11 +0000
commit96fa7b7fc24771da4da9b327733f819959112200 (patch)
tree1f74796921f5726c9cbf7d74fe388ff12514e1ff /usr.bin/ssh
parent8bfd21b410854ea73a4e19990ea3a69021684b1f (diff)
undo the 'delay hostname lookup' change
match.c must not use compress.c (via canonhost.c/packet.c) thanks to wilfried@
Diffstat (limited to 'usr.bin/ssh')
-rw-r--r--usr.bin/ssh/auth.c12
-rw-r--r--usr.bin/ssh/match.c9
-rw-r--r--usr.bin/ssh/match.h4
3 files changed, 14 insertions, 11 deletions
diff --git a/usr.bin/ssh/auth.c b/usr.bin/ssh/auth.c
index 608e1f3618b..6e29d662e78 100644
--- a/usr.bin/ssh/auth.c
+++ b/usr.bin/ssh/auth.c
@@ -23,7 +23,7 @@
*/
#include "includes.h"
-RCSID("$OpenBSD: auth.c,v 1.34 2002/02/28 20:56:00 stevesk Exp $");
+RCSID("$OpenBSD: auth.c,v 1.35 2002/03/01 13:12:10 markus Exp $");
#include <libgen.h>
@@ -56,6 +56,7 @@ int
allowed_user(struct passwd * pw)
{
struct stat st;
+ const char *hostname = NULL, *ipaddr = NULL;
char *shell;
int i;
@@ -81,10 +82,15 @@ allowed_user(struct passwd * pw)
return 0;
}
+ if (options.num_deny_users > 0 || options.num_allow_users > 0) {
+ hostname = get_canonical_hostname(options.verify_reverse_mapping);
+ ipaddr = get_remote_ipaddr();
+ }
+
/* Return false if user is listed in DenyUsers */
if (options.num_deny_users > 0) {
for (i = 0; i < options.num_deny_users; i++)
- if (match_user(pw->pw_name, options.verify_reverse_mapping,
+ if (match_user(pw->pw_name, hostname, ipaddr,
options.deny_users[i])) {
log("User %.100s not allowed because listed in DenyUsers",
pw->pw_name);
@@ -94,7 +100,7 @@ allowed_user(struct passwd * pw)
/* Return false if AllowUsers isn't empty and user isn't listed there */
if (options.num_allow_users > 0) {
for (i = 0; i < options.num_allow_users; i++)
- if (match_user(pw->pw_name, options.verify_reverse_mapping,
+ if (match_user(pw->pw_name, hostname, ipaddr,
options.allow_users[i]))
break;
/* i < options.num_allow_users iff we break for loop */
diff --git a/usr.bin/ssh/match.c b/usr.bin/ssh/match.c
index e73ed2aa2e8..3ddb6273027 100644
--- a/usr.bin/ssh/match.c
+++ b/usr.bin/ssh/match.c
@@ -35,10 +35,9 @@
*/
#include "includes.h"
-RCSID("$OpenBSD: match.c,v 1.18 2002/02/28 19:36:28 stevesk Exp $");
+RCSID("$OpenBSD: match.c,v 1.19 2002/03/01 13:12:10 markus Exp $");
#include "match.h"
-#include "canohost.h"
#include "xmalloc.h"
/*
@@ -203,7 +202,7 @@ match_host_and_ip(const char *host, const char *ipaddr,
* match user, user@host_or_ip, user@host_or_ip_list against pattern
*/
int
-match_user(const char *user, int verify_reverse_mapping,
+match_user(const char *user, const char *host, const char *ipaddr,
const char *pattern)
{
char *p, *pat;
@@ -217,9 +216,7 @@ match_user(const char *user, int verify_reverse_mapping,
*p++ = '\0';
if ((ret = match_pattern(user, pat)) == 1)
- ret = match_host_and_ip(
- get_canonical_hostname(verify_reverse_mapping),
- get_remote_ipaddr(), p);
+ ret = match_host_and_ip(host, ipaddr, p);
xfree(pat);
return ret;
diff --git a/usr.bin/ssh/match.h b/usr.bin/ssh/match.h
index a5e85a9d872..a0764e0013f 100644
--- a/usr.bin/ssh/match.h
+++ b/usr.bin/ssh/match.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: match.h,v 1.11 2002/02/28 19:36:28 stevesk Exp $ */
+/* $OpenBSD: match.h,v 1.12 2002/03/01 13:12:10 markus Exp $ */
/*
* Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -18,7 +18,7 @@ int match_pattern(const char *, const char *);
int match_pattern_list(const char *, const char *, u_int, int);
int match_hostname(const char *, const char *, u_int);
int match_host_and_ip(const char *, const char *, const char *);
-int match_user(const char *, int, const char *);
+int match_user(const char *, const char *, const char *, const char *);
char *match_list(const char *, const char *, u_int *);
#endif