From 209f520d289a33313ecff7921468a9adb4d1cb6a Mon Sep 17 00:00:00 2001 From: silverpill Date: Thu, 22 Dec 2022 21:42:14 +0000 Subject: [PATCH] Don't treat SVG files as images --- src/mastodon_api/media/views.rs | 4 ++-- src/mastodon_api/uploads.rs | 6 +++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/mastodon_api/media/views.rs b/src/mastodon_api/media/views.rs index cd9098c..dca716e 100644 --- a/src/mastodon_api/media/views.rs +++ b/src/mastodon_api/media/views.rs @@ -19,7 +19,7 @@ async fn create_attachment_view( ) -> Result { let db_client = &**get_database_client(&db_pool).await?; let current_user = get_current_user(db_client, auth.token()).await?; - let (file_name, media_type) = save_b64_file( + let (file_name, maybe_media_type) = save_b64_file( &attachment_data.file, attachment_data.media_type.clone(), &config.media_dir(), @@ -28,7 +28,7 @@ async fn create_attachment_view( db_client, ¤t_user.id, file_name, - media_type, + maybe_media_type, ).await?; let attachment = Attachment::from_db( db_attachment, diff --git a/src/mastodon_api/uploads.rs b/src/mastodon_api/uploads.rs index ffa2b47..2b8035a 100644 --- a/src/mastodon_api/uploads.rs +++ b/src/mastodon_api/uploads.rs @@ -33,13 +33,17 @@ impl From for HttpError { pub fn save_b64_file( b64data: &str, - maybe_media_type: Option, + mut maybe_media_type: Option, output_dir: &Path, ) -> Result<(String, Option), UploadError> { let data = base64::decode(b64data)?; if data.len() > UPLOAD_MAX_SIZE { return Err(UploadError::TooLarge); }; + if maybe_media_type.as_deref() == Some("image/svg+xml") { + // Don't treat SVG files as images + maybe_media_type = None; + }; Ok(save_file(data, output_dir, maybe_media_type)?) }