Skip to content
Permalink
Browse files

urlapi: fix URL encoding when setting a full URL

  • Loading branch information...
bagder committed Oct 1, 2019
1 parent 54c622a commit 2c20109a9b5d0499a14a0226e68d55d027ecdb20
Showing with 16 additions and 1 deletion.
  1. +16 −1 lib/urlapi.c
@@ -851,6 +851,16 @@ static CURLUcode seturl(const char *url, CURLU *u, unsigned int flags)
if(junkscan(path))
return CURLUE_MALFORMED_INPUT;

if((flags & CURLU_URLENCODE) && path[0]) {
/* worst case output length is 3x the original! */
char *newp = malloc(strlen(path) * 3);
if(!newp)
return CURLUE_OUT_OF_MEMORY;
path_alloced = TRUE;
strcpy_url(newp, path, TRUE); /* consider it relative */
path = newp;
}

fragment = strchr(path, '#');
if(fragment)
*fragment++ = 0;
@@ -865,11 +875,16 @@ static CURLUcode seturl(const char *url, CURLU *u, unsigned int flags)
else if(!(flags & CURLU_PATH_AS_IS)) {
/* sanitise paths and remove ../ and ./ sequences according to RFC3986 */
char *newp = Curl_dedotdotify(path);
if(!newp)
if(!newp) {
if(path_alloced)
free(path);
return CURLUE_OUT_OF_MEMORY;
}

if(strcmp(newp, path)) {
/* if we got a new version */
if(path_alloced)
free(path);
path = newp;
path_alloced = TRUE;
}

0 comments on commit 2c20109

Please sign in to comment.
You can’t perform that action at this time.