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