Commit 58085dbb authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

Jim Drash suggested and I made it not encode what looks like an already

encoded letter (in curl_escape)
parent 546572da
Loading
Loading
Loading
Loading
+22 −7
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@
 * allocated string or NULL if an error occurred.  */

#include "setup.h"
#include <ctype.h>
#include <curl/curl.h>

#include <stdio.h>
@@ -52,6 +53,19 @@ char *curl_escape(char *string, int length)
            !(in >= 'A' && in <= 'Z') &&
            !(in >= '0' && in <= '9')) {
      /* encode it */
      if(('%' == in) &&
         (length>=2) &&
         isxdigit((int)string[1]) &&
         isxdigit((int)string[2]) ) {
        /*
         * This is an already encoded letter, leave it!
         */
        memcpy(&ns[index], string, 3);
        string+=2;
      }
      else {
        /* encode this now */

        newlen += 2; /* the size grows with two, since this'll become a %XX */
        if(newlen > alloc) {
          alloc *= 2;
@@ -60,6 +74,7 @@ char *curl_escape(char *string, int length)
            return NULL;
        }
        sprintf(&ns[index], "%%%02X", in);
      }
      index+=3;
    }
    else {