From 91a8357dfa155adcea3297e1ea6128d036220acf Mon Sep 17 00:00:00 2001 From: hniksic Date: Fri, 13 May 2005 04:54:53 -0700 Subject: [PATCH] [svn] Document the code that decides whether "*" matches ".". --- src/ChangeLog | 5 +++++ src/openssl.c | 9 ++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/ChangeLog b/src/ChangeLog index eeff7484..1ed3c003 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2005-05-13 Hrvoje Niksic + + * openssl.c (pattern_match): Document the code that decides + whether "*" matches ".". + 2005-05-12 Hrvoje Niksic * ftp-ls.c (ftp_index): Use %d to print the port number, which is diff --git a/src/openssl.c b/src/openssl.c index 7a29167d..70e10731 100644 --- a/src/openssl.c +++ b/src/openssl.c @@ -346,6 +346,8 @@ ssl_connect (int fd) return 0; } +#define ASTERISK_EXCLUDES_DOT /* mandated by rfc2818 */ + /* Return 1 is STRING (case-insensitively) matches PATTERN, 0 otherwise. The recognized wildcard character is "*", which matches any character in STRING except ".". Any number of the "*" wildcard @@ -355,7 +357,10 @@ ssl_connect (int fd) contain the wildcard character * which is considered to match any single domain name component or component fragment. E.g., *.a.com matches foo.a.com but not bar.foo.a.com. f*.com matches foo.com but - not bar.com." */ + not bar.com [or foo.bar.com]." + + If the pattern contain no wildcards, pattern_match(a, b) is + equivalent to !strcasecmp(a, b). */ static int pattern_match (const char *pattern, const char *string) @@ -370,8 +375,10 @@ pattern_match (const char *pattern, const char *string) for (; *n != '\0'; n++) if (TOLOWER (*n) == c && pattern_match (p, n)) return 1; +#ifdef ASTERISK_EXCLUDES_DOT else if (*n == '.') return 0; +#endif return c == '\0'; } else -- 2.39.2