From 3e3faddb4a3792557351f1a6e9f2685e4713eb24 Mon Sep 17 00:00:00 2001 From: John Hollowell Date: Fri, 18 Nov 2022 01:39:10 +0000 Subject: [PATCH] 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 --- src/PVE/APIServer/AnyEvent.pm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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 } } -- 2.39.2