diff --git a/lib/escape.c b/lib/escape.c index 1633c2da2b..9b6edb4433 100644 --- a/lib/escape.c +++ b/lib/escape.c @@ -63,12 +63,12 @@ char *curl_easy_escape(struct Curl_easy *data, const char *string, if(!string || (inlength < 0)) return NULL; - Curl_dyn_init(&d, CURL_MAX_INPUT_LENGTH * 3); - length = (inlength?(size_t)inlength:strlen(string)); if(!length) return strdup(""); + Curl_dyn_init(&d, length * 3 + 1); + while(length--) { /* treat the characters unsigned */ unsigned char in = (unsigned char)*string++;