From 81d45ffadff3c4f23ed9eb7a310b5267db6fb0ea Mon Sep 17 00:00:00 2001 From: Volkor <me@volkor.me> Date: Fri, 7 Jul 2023 22:43:28 +1000 Subject: [PATCH] FIX: crashing on files smaller than 2048 bytes --- src/handlers/upload.rs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/handlers/upload.rs b/src/handlers/upload.rs index c68a979..cd55bd2 100644 --- a/src/handlers/upload.rs +++ b/src/handlers/upload.rs @@ -51,13 +51,15 @@ pub async fn upload(req: &mut Request, res: &mut Response) { engine::generate_filename(length, file.name().unwrap_or("file").to_string()).await; // Get the temporary file - let mut mime_file = File::open(file.path()).expect("Error opening file"); - let mut buffer = vec![0; 2048]; + let mime_file = File::open(file.path()).expect("Error opening file"); + let mut buffer = Vec::with_capacity(2048); // Load up 2048 bytes (There wasn't a decent answer on how much or little I should read) - mime_file - .read_exact(&mut buffer) - .expect("Error reading file"); + mime_file.take(2048) + .read_to_end(&mut buffer).expect("couldn't read mimetype buffer"); + + tracing::trace!("read bytes for mime parsing: {:x?}", buffer); + // Guess the mimetype let mimetype: &str = &detect_mime_type(&buffer).unwrap_or("text/plain".to_string()); -- GitLab