aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Felder <feld@FreeBSD.org>2020-09-04 17:56:05 -0500
committerrinpatch <rinpatch@sdf.org>2020-09-08 12:29:38 +0300
commit216c84a8f4d82649110ffaa2bc9d02b879805c5f (patch)
tree8cc0eee8377ad60bd405f8544a0acea1b8116154
parent3a98960c2684229435c5d04e4f3e0611098ceea2 (diff)
downloadpleroma-216c84a8f4d82649110ffaa2bc9d02b879805c5f.tar.gz
Bypass the filter based on content-type as well in case a webp image is uploaded with the wrong file extension.
-rw-r--r--lib/pleroma/upload/filter/exiftool.ex5
-rw-r--r--test/upload/filter/exiftool_test.exs10
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