summaryrefslogtreecommitdiff
path: root/lib/url.c
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2014-05-05 13:47:52 +0200
committerDaniel Stenberg <daniel@haxx.se>2014-05-06 08:44:11 +0200
commit5de8d84098db1bd24e7fffefbe14e81f2a05995a (patch)
tree4f5081b2250f41e512a930ba742b52e97244bd9a /lib/url.c
parent47d760714f2f44b7edc8f1ef4d5518286e402af9 (diff)
downloadcurl-5de8d84098db1bd24e7fffefbe14e81f2a05995a.tar.gz
fix_hostname: strip off a single trailing dot from host name
Primarily for SNI, we need the host name without a trailing dot. "https://www.example.com." resolves fine but fails on SNI unless the dot is removed. Reported-by: Leon Winter Bug: http://curl.haxx.se/mail/lib-2014-04/0161.html
Diffstat (limited to 'lib/url.c')
-rw-r--r--lib/url.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/url.c b/lib/url.c
index 5952a9bec..c9339210c 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -3502,9 +3502,17 @@ static void fix_hostname(struct SessionHandle *data,
#elif defined(CURL_DISABLE_VERBOSE_STRINGS)
(void)conn;
#endif
+ size_t len;
/* set the name we use to display the host name */
host->dispname = host->name;
+
+ len = strlen(host->name);
+ if(host->name[len-1] == '.')
+ /* strip off a single trailing dot if present, primarily for SNI but
+ there's no use for it */
+ host->name[len-1]=0;
+
if(!is_ASCII_name(host->name)) {
#ifdef USE_LIBIDN
/*************************************************************