From 82aeae4da13e808b0e8e088e7f1fe6f902f72ea6 Mon Sep 17 00:00:00 2001 From: Ilia Alshanetsky Date: Tue, 21 Jul 2009 15:56:08 +0000 Subject: [PATCH] Fixed bug #48962 (cURL does not upload files with specified filename). --- ext/curl/interface.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/ext/curl/interface.c b/ext/curl/interface.c index 040942aa2f..eef4db2a0e 100644 --- a/ext/curl/interface.c +++ b/ext/curl/interface.c @@ -1863,32 +1863,32 @@ type_conflict: * must be explicitly cast to long in curl_formadd * use since curl needs a long not an int. */ if (*postval == '@') { - char *type; + char *type, *filename; ++postval; if ((type = php_memnstr(postval, ";type=", sizeof(";type=") - 1, postval + Z_STRLEN_PP(current)))) { *type = '\0'; } + if ((filename = php_memnstr(postval, ";filename=", sizeof(";filename=") - 1, postval + Z_STRLEN_PP(current)))) { + *filename = '\0'; + } /* open_basedir check */ if (php_check_open_basedir(postval TSRMLS_CC)) { RETVAL_FALSE; return 1; } + error = curl_formadd(&first, &last, + CURLFORM_COPYNAME, string_key, + CURLFORM_NAMELENGTH, (long)string_key_len - 1, + CURLFORM_FILENAME, filename ? filename : postval, + CURLFORM_CONTENTTYPE, type ? type + sizeof(";type=") - 1 : "application/octet-stream", + CURLFORM_FILE, postval, + CURLFORM_END); if (type) { - error = curl_formadd(&first, &last, - CURLFORM_COPYNAME, key, - CURLFORM_NAMELENGTH, l, - CURLFORM_FILE, postval, - CURLFORM_CONTENTTYPE, type + sizeof(";type=") - 1, - CURLFORM_END); *type = ';'; - } else { - error = curl_formadd(&first, &last, - CURLFORM_COPYNAME, key, - CURLFORM_NAMELENGTH, l, - CURLFORM_FILE, postval, - CURLFORM_END); - + } + if (filename) { + *filename = ';'; } } else { error = curl_formadd(&first, &last, -- 2.40.0