summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2015-04-16 23:52:04 +0200
committerDaniel Stenberg <daniel@haxx.se>2015-04-21 23:20:36 +0200
commit0583e87ada7a3cfb10904ae4ab61b339582c5bd3 (patch)
tree0d31a571bf1a38b859e6effa93ac7117d1264286
parentb5f947b8ac0e282c61c75b69cd5b9d37dafc6959 (diff)
downloadcurl-0583e87ada7a3cfb10904ae4ab61b339582c5bd3.tar.gz
fix_hostname: zero length host name caused -1 index offset
If a URL is given with a zero-length host name, like in "http://:80" or just ":80", `fix_hostname()` will index the host name pointer with a -1 offset (as it blindly assumes a non-zero length) and both read and assign that address. CVE-2015-3144 Bug: http://curl.haxx.se/docs/adv_20150422D.html Reported-by: Hanno Böck
-rw-r--r--lib/url.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/url.c b/lib/url.c
index ee3d176d9..f033dbc95 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -3627,7 +3627,7 @@ static void fix_hostname(struct SessionHandle *data,
host->dispname = host->name;
len = strlen(host->name);
- if(host->name[len-1] == '.')
+ if(len && (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;