aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/upload.ex11
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/pleroma/upload.ex b/lib/pleroma/upload.ex
index cc4dcf45e..47279dc0b 100644
--- a/lib/pleroma/upload.ex
+++ b/lib/pleroma/upload.ex
@@ -72,6 +72,7 @@ defmodule Pleroma.Upload do
with {:ok, upload} <- prepare_upload(upload, opts),
upload = %__MODULE__{upload | path: upload.path || "#{upload.id}/#{upload.name}"},
+ :ok <- check_filename_extension(upload.name, opts),
{:ok, upload} <- Pleroma.Upload.Filter.filter(opts.filters, upload),
description = get_description(opts, upload),
{_, true} <-
@@ -199,6 +200,16 @@ defmodule Pleroma.Upload do
defp check_file_size(_, _), do: :ok
+ defp check_filename_extension(name, %{filename: filename}) when is_binary(filename) do
+ if Path.extname(name) == Path.extname(filename) do
+ :ok
+ else
+ {:error, :invalid_filename_extension}
+ end
+ end
+
+ defp check_filename_extension(_, _), do: :ok
+
# Creates a tempfile using the Plug.Upload Genserver which cleans them up
# automatically.
defp tempfile_for_image(data) do