From: John Hollowell Date: Fri, 18 Nov 2022 01:39:10 +0000 (+0000) Subject: fix #4344: http-server: ignore unused multipart headers X-Git-Url: https://git.proxmox.com/?p=pve-http-server.git;a=commitdiff_plain;h=3e3faddb4a3792557351f1a6e9f2685e4713eb24 fix #4344: http-server: ignore unused multipart headers In commit 0fbcbc2 ("fix #3990: multipart upload: rework to fix uploading small files") a breaking change was added which now requires the file's multipart part to have a `Content-Type` even though the content type is never used. It is just included to consume those bytes so phase 2 (dumping the file contents into the file) can continue. Avoid this overly strict and unused requirement. Signed-off-by: John Hollowell [ T: resolve merge conflict, add telling commit message ] Signed-off-by: Thomas Lamprecht --- diff --git a/src/PVE/APIServer/AnyEvent.pm b/src/PVE/APIServer/AnyEvent.pm index 3cd77fa..af44e9c 100644 --- a/src/PVE/APIServer/AnyEvent.pm +++ b/src/PVE/APIServer/AnyEvent.pm @@ -1223,15 +1223,15 @@ sub file_upload_multipart { $extract_form_disposition->('checksum'); if ($hdl->{rbuf} =~ - s/^${delim_re} - Content-Disposition:\ (.*?);\ name="(.*?)";\ filename="([^"]+)"${newline_re} - Content-Type:\ \S*${newline_re}{2} - //sxx + s/^${delim_re}Content-Disposition:\ (.*?);\ name="(.*?)";\ filename="([^"]+)"${newline_re}//sxx ) { assert_form_disposition($1); die "wrong field name '$2' for file upload, expected 'filename'" if $2 ne "filename"; $rstate->{phase} = 2; $rstate->{params}->{filename} = trim($3); + + # remove any remaining multipart "headers" like Content-Type + $hdl->{rbuf} =~ s/^.*?${newline_re}{2}//s } }