X-Git-Url: http://andersk.mit.edu/gitweb/gssapi-openssh.git/blobdiff_plain/9108f8d92b8e2b4b5fe61eb8e419bf94ba216d44..99a781071582d870e3aa172c8f3564914b0eeb75:/openssh/match.c diff --git a/openssh/match.c b/openssh/match.c index e3c9930..188b9a4 100644 --- a/openssh/match.c +++ b/openssh/match.c @@ -1,4 +1,3 @@ -/* $OpenBSD: match.c,v 1.26 2006/08/03 03:34:42 deraadt Exp $ */ /* * Author: Tatu Ylonen * Copyright (c) 1995 Tatu Ylonen , Espoo, Finland @@ -36,14 +35,10 @@ */ #include "includes.h" +RCSID("$OpenBSD: match.c,v 1.14 2001/06/27 04:48:53 markus Exp $"); -#include - -#include -#include - -#include "xmalloc.h" #include "match.h" +#include "xmalloc.h" /* * Returns true if the given string matches the pattern (which may contain ? @@ -109,15 +104,14 @@ match_pattern(const char *s, const char *pattern) } /* - * Tries to match the string against the + * Tries to match the host name (which must be in all lowercase) against the * comma-separated sequence of subpatterns (each possibly preceded by ! to * indicate negation). Returns -1 if negation matches, 1 if there is * a positive match, 0 if there is no match at all. */ int -match_pattern_list(const char *string, const char *pattern, u_int len, - int dolower) +match_hostname(const char *host, const char *pattern, u_int len) { char sub[1024]; int negated; @@ -138,10 +132,9 @@ match_pattern_list(const char *string, const char *pattern, u_int len, * subpattern to lowercase. */ for (subi = 0; - i < len && subi < sizeof(sub) - 1 && pattern[i] != ','; - subi++, i++) - sub[subi] = dolower && isupper(pattern[i]) ? - (char)tolower(pattern[i]) : pattern[i]; + i < len && subi < sizeof(sub) - 1 && pattern[i] != ','; + subi++, i++) + sub[subi] = isupper(pattern[i]) ? tolower(pattern[i]) : pattern[i]; /* If subpattern too long, return failure (no match). */ if (subi >= sizeof(sub) - 1) return 0; @@ -153,8 +146,8 @@ match_pattern_list(const char *string, const char *pattern, u_int len, /* Null-terminate the subpattern. */ sub[subi] = '\0'; - /* Try to match the subpattern against the string. */ - if (match_pattern(string, sub)) { + /* Try to match the subpattern against the host name. */ + if (match_pattern(host, sub)) { if (negated) return -1; /* Negative */ else @@ -169,18 +162,6 @@ match_pattern_list(const char *string, const char *pattern, u_int len, return got_positive; } -/* - * Tries to match the host name (which must be in all lowercase) against the - * comma-separated sequence of subpatterns (each possibly preceded by ! to - * indicate negation). Returns -1 if negation matches, 1 if there is - * a positive match, 0 if there is no match at all. - */ -int -match_hostname(const char *host, const char *pattern, u_int len) -{ - return match_pattern_list(host, pattern, len, 1); -} - /* * returns 0 if we get a negative match for the hostname or the ip * or if we get no match at all. returns 1 otherwise. @@ -231,7 +212,7 @@ match_user(const char *user, const char *host, const char *ipaddr, * Returns first item from client-list that is also supported by server-list, * caller must xfree() returned string. */ -#define MAX_PROP 40 +#define MAX_PROP 20 #define SEP "," char * match_list(const char *client, const char *server, u_int *next) @@ -244,7 +225,7 @@ match_list(const char *client, const char *server, u_int *next) s = sp = xstrdup(server); for ((p = strsep(&sp, SEP)), i=0; p && *p != '\0'; - (p = strsep(&sp, SEP)), i++) { + (p = strsep(&sp, SEP)), i++) { if (i < MAX_PROP) sproposals[i] = p; else @@ -253,13 +234,13 @@ match_list(const char *client, const char *server, u_int *next) nproposals = i; for ((p = strsep(&cp, SEP)), i=0; p && *p != '\0'; - (p = strsep(&cp, SEP)), i++) { + (p = strsep(&cp, SEP)), i++) { for (j = 0; j < nproposals; j++) { if (strcmp(p, sproposals[j]) == 0) { ret = xstrdup(p); if (next != NULL) *next = (cp == NULL) ? - strlen(c) : (u_int)(cp - c); + strlen(c) : cp - c; xfree(c); xfree(s); return ret;