From 216c84a8f4d82649110ffaa2bc9d02b879805c5f Mon Sep 17 00:00:00 2001
From: Mark Felder <feld@FreeBSD.org>
Date: Fri, 4 Sep 2020 17:56:05 -0500
Subject: [PATCH] Bypass the filter based on content-type as well in case a
 webp image is uploaded with the wrong file extension.

---
 lib/pleroma/upload/filter/exiftool.ex |  5 ++++-
 test/upload/filter/exiftool_test.exs  | 10 +++++++---
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/lib/pleroma/upload/filter/exiftool.ex b/lib/pleroma/upload/filter/exiftool.ex
index 94d12c01b..b07a671ac 100644
--- a/lib/pleroma/upload/filter/exiftool.ex
+++ b/lib/pleroma/upload/filter/exiftool.ex
@@ -10,8 +10,11 @@ defmodule Pleroma.Upload.Filter.Exiftool do
   @behaviour Pleroma.Upload.Filter
 
   @spec filter(Pleroma.Upload.t()) :: {:ok, any()} | {:error, String.t()}
+
+  # webp is not compatible with exiftool at this time
+  def filter(%Pleroma.Upload{content_type: "image/webp"}), do: {:ok, :noop}
+
   def filter(%Pleroma.Upload{name: file, tempfile: path, content_type: "image" <> _}) do
-    # webp is not compatible with exiftool at this time
     if Regex.match?(~r/\.(webp)$/i, file) do
       {:ok, :noop}
     else
diff --git a/test/upload/filter/exiftool_test.exs b/test/upload/filter/exiftool_test.exs
index fe24036d9..84a3f8b30 100644
--- a/test/upload/filter/exiftool_test.exs
+++ b/test/upload/filter/exiftool_test.exs
@@ -34,11 +34,15 @@ defmodule Pleroma.Upload.Filter.ExiftoolTest do
   test "verify webp files are skipped" do
     upload = %Pleroma.Upload{
       name: "sample.webp",
-      content_type: "image/webp",
-      path: Path.absname("/dev/null"),
-      tempfile: Path.absname("/dev/null")
+      content_type: "image/webp"
+    }
+
+    bad_type = %Pleroma.Upload{
+      name: "sample.webp",
+      content_type: "image/jpeg"
     }
 
     assert Filter.Exiftool.filter(upload) == {:ok, :noop}
+    assert Filter.Exiftool.filter(bad_type) == {:ok, :noop}
   end
 end
-- 
2.49.0