CURLFORM_STREAM: acknowledge CURLFORM_FILENAME
The CURLFORM_STREAM is documented to only insert a file name (and thus look like a file upload) in the part if CURLFORM_FILENAME is set, but in reality it always inserted a filename="" and if CURLFORM_FILENAME wasn't set, it would insert insert rubbish (or possibly crash). This is now fixed to work as documented, and test 554 has been extended to verify this. Reported by: Sascha Swiercy Bug: http://curl.haxx.se/mail/lib-2011-06/0070.html
This commit is contained in:
@@ -1134,15 +1134,17 @@ CURLcode Curl_getformdata(struct SessionHandle *data,
|
||||
/* it should be noted that for the HTTPPOST_FILENAME and
|
||||
HTTPPOST_CALLBACK cases the ->showfilename struct member is always
|
||||
assigned at this point */
|
||||
char *filebasename=
|
||||
(!post->showfilename)?strippath(post->contents):NULL;
|
||||
if(post->showfilename || (post->flags & HTTPPOST_FILENAME)) {
|
||||
char *filebasename=
|
||||
(!post->showfilename)?strippath(post->contents):NULL;
|
||||
|
||||
result = AddFormDataf(&form, &size,
|
||||
"; filename=\"%s\"",
|
||||
(post->showfilename?post->showfilename:
|
||||
filebasename));
|
||||
if(filebasename)
|
||||
free(filebasename);
|
||||
result = AddFormDataf(&form, &size,
|
||||
"; filename=\"%s\"",
|
||||
(post->showfilename?post->showfilename:
|
||||
filebasename));
|
||||
if(filebasename)
|
||||
free(filebasename);
|
||||
}
|
||||
|
||||
if(result)
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user