From 571ceeff908bff65365dd8b4d40bfa0a3ad03867 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Wed, 12 Mar 2003 14:20:16 +0000 Subject: When we append stuff to the URL, we must make sure the text is properly URL encoded before. Test case 58 added to verify this. --- src/main.c | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) (limited to 'src/main.c') diff --git a/src/main.c b/src/main.c index 4e6f8aed4..e5e6d540a 100644 --- a/src/main.c +++ b/src/main.c @@ -2657,19 +2657,28 @@ operate(struct Configurable *config, int argc, char *argv[]) else filep = config->infile; - urlbuffer=(char *)malloc(strlen(url) + strlen(filep) + 3); - if(!urlbuffer) { - helpf("out of memory\n"); - return CURLE_OUT_OF_MEMORY; + /* URL encode the file name */ + filep = curl_escape(filep, 0 /* use strlen */); + + if(filep) { + + urlbuffer=(char *)malloc(strlen(url) + strlen(filep) + 3); + if(!urlbuffer) { + helpf("out of memory\n"); + return CURLE_OUT_OF_MEMORY; + } + if(ptr) + /* there is a trailing slash on the URL */ + sprintf(urlbuffer, "%s%s", url, filep); + else + /* thers is no trailing slash on the URL */ + sprintf(urlbuffer, "%s/%s", url, filep); + + curl_free(filep); + + free(url); + url = urlbuffer; /* use our new URL instead! */ } - if(ptr) - /* there is a trailing slash on the URL */ - sprintf(urlbuffer, "%s%s", url, filep); - else - /* thers is no trailing slash on the URL */ - sprintf(urlbuffer, "%s/%s", url, filep); - - url = urlbuffer; /* use our new URL instead! */ } /*VMS??-- Reading binary from files can be a problem... */ /*VMS?? Only FIXED, VAR etc WITHOUT implied CC will work */ -- cgit v1.2.3