25 #if defined(USE_OPENSSL) \ 26 || defined(USE_AXTLS) \ 27 || defined(USE_GSKIT) \ 28 || (defined(USE_SCHANNEL) && defined(_WIN32_WCE)) 31 #ifdef HAVE_NETINET_IN_H 32 #include <netinet/in.h> 63 static int hostmatch(
char *
hostname,
char *pattern)
65 const char *pattern_label_end, *pattern_wildcard, *hostname_label_end;
67 size_t prefixlen, suffixlen;
68 struct in_addr ignored;
70 struct sockaddr_in6 si6;
74 size_t len = strlen(hostname);
75 if(hostname[len-1]==
'.')
77 len = strlen(pattern);
78 if(pattern[len-1]==
'.')
81 pattern_wildcard = strchr(pattern,
'*');
82 if(pattern_wildcard == NULL)
97 pattern_label_end = strchr(pattern,
'.');
98 if(pattern_label_end == NULL || strchr(pattern_label_end + 1,
'.') == NULL ||
99 pattern_wildcard > pattern_label_end ||
101 wildcard_enabled = 0;
103 if(!wildcard_enabled)
107 hostname_label_end = strchr(hostname,
'.');
108 if(hostname_label_end == NULL ||
115 if(hostname_label_end - hostname < pattern_label_end - pattern)
118 prefixlen = pattern_wildcard - pattern;
119 suffixlen = pattern_label_end - (pattern_wildcard + 1);
131 if(!match_pattern || !*match_pattern ||
132 !hostname || !*hostname)
135 matchp =
strdup(match_pattern);
#define strcasecompare(a, b)
#define CURL_HOST_NOMATCH
#define strncasecompare(a, b, c)
int Curl_inet_pton(int af, const char *src, void *dst)
int Curl_cert_hostcheck(const char *match_pattern, const char *hostname)