]> granicus.if.org Git - curl/commitdiff
url.c: Fix dot file path cleanup when using an HTTP proxy
authorFabian Keil <fk@fabiankeil.de>
Sat, 13 Jul 2013 12:12:18 +0000 (14:12 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 23 Jul 2013 18:51:15 +0000 (20:51 +0200)
Previously the path was cleaned, but the URL wasn't properly updated.

lib/url.c

index cda4e482598a6be1e1e0039522668c95cf2d2f71..a8f2a09852e5e9d4972d6264fae5950ea3eed43f 100644 (file)
--- a/lib/url.c
+++ b/lib/url.c
@@ -3899,15 +3899,20 @@ static CURLcode parseurlandfillconn(struct SessionHandle *data,
                                    the original */
     size_t urllen = strlen(data->change.url); /* original URL length */
 
+    size_t prefixlen = strlen(conn->host.name);
+
+    if(!*prot_missing)
+      prefixlen += strlen(protop) + strlen("://");
+
     reurl = malloc(urllen + 2); /* 2 for zerobyte + slash */
     if(!reurl)
       return CURLE_OUT_OF_MEMORY;
 
     /* copy the prefix */
-    memcpy(reurl, data->change.url, urllen - (plen-1));
+    memcpy(reurl, data->change.url, prefixlen);
 
     /* append the trailing piece + zerobyte */
-    memcpy(&reurl[urllen - (plen-1)], path, plen + 1);
+    memcpy(&reurl[prefixlen], path, plen + 1);
 
     /* possible free the old one */
     if(data->change.url_alloc) {