diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/upload.ex | 11 |
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 |