From 95def09838fc61b37b6ea7cd5c234a465b4b129b Mon Sep 17 00:00:00 2001 From: Damien Miller Date: Thu, 25 Nov 1999 00:26:21 +1100 Subject: - Merged very large OpenBSD source code reformat - OpenBSD CVS updates - [channels.c cipher.c compat.c log-client.c scp.c serverloop.c] [ssh.h sshd.8 sshd.c] syslog changes: * Unified Logmessage for all auth-types, for success and for failed * Standard connections get only ONE line in the LOG when level==LOG: Auth-attempts are logged only, if authentication is: a) successfull or b) with passwd or c) we had more than AUTH_FAIL_LOG failues * many log() became verbose() * old behaviour with level=VERBOSE - [readconf.c readconf.h ssh.1 ssh.h sshconnect.c sshd.c] tranfer s/key challenge/response data in SSH_SMSG_AUTH_TIS_CHALLENGE messages. allows use of s/key in windows (ttssh, securecrt) and ssh-1.2.27 clients without 'ssh -v', ok: niels@ - [sshd.8] -V, for fallback to openssh in SSH2 compatibility mode - [sshd.c] fix sigchld race; cjc5@po.cwru.edu --- match.c | 125 ++++++++++++++++++++++++++++++++-------------------------------- 1 file changed, 62 insertions(+), 63 deletions(-) (limited to 'match.c') diff --git a/match.c b/match.c index b7a7d338..c0729dd8 100644 --- a/match.c +++ b/match.c @@ -1,78 +1,77 @@ /* - -match.c - -Author: Tatu Ylonen - -Copyright (c) 1995 Tatu Ylonen , Espoo, Finland - All rights reserved - -Created: Thu Jun 22 01:17:50 1995 ylo - -Simple pattern matching, with '*' and '?' as wildcards. - -*/ + * + * match.c + * + * Author: Tatu Ylonen + * + * Copyright (c) 1995 Tatu Ylonen , Espoo, Finland + * All rights reserved + * + * Created: Thu Jun 22 01:17:50 1995 ylo + * + * Simple pattern matching, with '*' and '?' as wildcards. + * + */ #include "includes.h" -RCSID("$Id: match.c,v 1.1 1999/10/27 03:42:44 damien Exp $"); +RCSID("$Id: match.c,v 1.2 1999/11/24 13:26:22 damien Exp $"); #include "ssh.h" /* Returns true if the given string matches the pattern (which may contain ? and * as wildcards), and zero if it does not match. */ - -int match_pattern(const char *s, const char *pattern) -{ - while (1) - { - /* If at end of pattern, accept if also at end of string. */ - if (!*pattern) - return !*s; - /* Process '*'. */ - if (*pattern == '*') - { - /* Skip the asterisk. */ - pattern++; +int +match_pattern(const char *s, const char *pattern) +{ + for (;;) { + /* If at end of pattern, accept if also at end of string. */ + if (!*pattern) + return !*s; - /* If at end of pattern, accept immediately. */ - if (!*pattern) - return 1; + /* Process '*'. */ + if (*pattern == '*') { + /* Skip the asterisk. */ + pattern++; - /* If next character in pattern is known, optimize. */ - if (*pattern != '?' && *pattern != '*') - { - /* Look instances of the next character in pattern, and try - to match starting from those. */ - for (; *s; s++) - if (*s == *pattern && - match_pattern(s + 1, pattern + 1)) - return 1; - /* Failed. */ - return 0; - } + /* If at end of pattern, accept immediately. */ + if (!*pattern) + return 1; - /* Move ahead one character at a time and try to match at each - position. */ - for (; *s; s++) - if (match_pattern(s, pattern)) - return 1; - /* Failed. */ - return 0; - } + /* If next character in pattern is known, optimize. */ + if (*pattern != '?' && *pattern != '*') { + /* Look instances of the next character in + pattern, and try to match starting from + those. */ + for (; *s; s++) + if (*s == *pattern && + match_pattern(s + 1, pattern + 1)) + return 1; + /* Failed. */ + return 0; + } + /* Move ahead one character at a time and try to + match at each position. */ + for (; *s; s++) + if (match_pattern(s, pattern)) + return 1; + /* Failed. */ + return 0; + } + /* There must be at least one more character in the + string. If we are at the end, fail. */ + if (!*s) + return 0; - /* There must be at least one more character in the string. If we are - at the end, fail. */ - if (!*s) - return 0; + /* Check if the next character of the string is + acceptable. */ + if (*pattern != '?' && *pattern != *s) + return 0; - /* Check if the next character of the string is acceptable. */ - if (*pattern != '?' && *pattern != *s) - return 0; - - /* Move to the next character, both in string and in pattern. */ - s++; - pattern++; - } - /*NOTREACHED*/ + /* Move to the next character, both in string and in + pattern. */ + s++; + pattern++; + } + /* NOTREACHED */ } -- cgit v1.2.3