Open dsauvage opened 7 months ago
@dsauvage : This patch looks wrong to me, I suppose we want the exception only if Mode = File_Upload
. When there is an attachment (MIME multipart) we certainly don't want to fail if Upload_Directory is not set.
Well it seems I does not understand your rational.
If file uploads are not supported by server, both entry points above should be tackled, and not only the first one.
[1] aws-server-http_utils.adb:1238 [2] aws-server-http_utils.adb:1250
@dsauvage : Well both cases are different.
multipart/form-data is used to upload files of MIME-compatible representation, such as pictures and video files, and related metadata a single POST request.
multipart/related is used for compound documents and you would need to combine the separate body parts to provide the full meaning of the message.
Only the first one is covered by "file upload" in AWS as it is really an explicit file upload.
The multipart/related is just a message containing different related parts and at the AWS user's point of view we don't want them to force allowing file upload feature.
Hope this clarifies the rational.
multipart/related
and multipart/form-data
POST requests are processed, having Upload_Directory
set. The requests files are written in the Upload_Directory
folder. So the Upload_Directory
parameter is associated to both request content types.multipart/form-data
POST request is processed, having Upload_Directory
unset, an HTTP status 500 is returned, mentioning "File upload not supported by server"multipart/related
POST request is processed, having Upload_Directory
unset, the files are written in the folder on the application executable, which is incoherent, unsafe and erroneousHope you will reconsider your assessment of this issue.
Hope you will reconsider your assessment of this issue.
I'm not sure what you're expecting. But raising an exception here is wrong as uploading is only a multipart/form-data
feature. If we raise an exception now we will break all existing servers which is not an option.
I'm not saying there is no issue and we certainly can improve this, but the patch here is not the way to go.
Multipart_Message.Store_Attachments
allows files to be uploaded on the server even isUpload_Directory
is disabled (empty String)To fix this issue we applied the same verification and error management as
Multipart_Message.File_Upload
(patch attached).Reproducer file
command.sh
attached, request payload below;In this case, as the
Content-Length
is bigger than the actual payload, the web server is waiting and the temporary uploaded file is not yet deleted. A simplels
command executed in the directory where the web server has been launched will show the temporary file.Another way to assess the temporary uploaded file is by using the
inotifywait
command executed in the directory where the web server has been launchedaws-server-http_utils.adb.changes.patch.txt
command.sh.txt