]> granicus.if.org Git - curl/commitdiff
urlapi: urlencode characters above 0x7f correctly
authorJakub Zakrzewski <slither.jz@gmail.com>
Sat, 6 Apr 2019 11:48:18 +0000 (13:48 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Sun, 7 Apr 2019 20:57:42 +0000 (22:57 +0200)
fixes #3741
Closes #3742

lib/urlapi.c

index a19867eb0f1ebeba95bb9673b58562a21d14c08f..04b04923e1e4a2d866013d53b53e785409a534df 100644 (file)
@@ -1273,7 +1273,7 @@ CURLUcode curl_url_set(CURLU *u, CURLUPart what,
     size_t nalloc = strlen(part);
 
     if(urlencode) {
-      const char *i;
+      const unsigned char *i;
       char *o;
       bool free_part = FALSE;
       char *enc = malloc(nalloc * 3 + 1); /* for worst case! */
@@ -1281,7 +1281,7 @@ CURLUcode curl_url_set(CURLU *u, CURLUPart what,
         return CURLUE_OUT_OF_MEMORY;
       if(plusencode) {
         /* space to plus */
-        i = part;
+        i = (const unsigned char *)part;
         for(o = enc; *i; ++o, ++i)
           *o = (*i == ' ') ? '+' : *i;
         *o = 0; /* zero terminate */
@@ -1292,7 +1292,7 @@ CURLUcode curl_url_set(CURLU *u, CURLUPart what,
         }
         free_part = TRUE;
       }
-      for(i = part, o = enc; *i; i++) {
+      for(i = (const unsigned char *)part, o = enc; *i; i++) {
         if(Curl_isunreserved(*i) ||
            ((*i == '/') && urlskipslash) ||
            ((*i == '=') && equalsencode) ||