diff options
| -rw-r--r-- | config/config.exs | 1 | ||||
| -rw-r--r-- | lib/pleroma/upload.ex | 9 | ||||
| -rw-r--r-- | test/upload_test.exs | 13 | 
3 files changed, 22 insertions, 1 deletions
diff --git a/config/config.exs b/config/config.exs index 9b550920c..d28a359b2 100644 --- a/config/config.exs +++ b/config/config.exs @@ -188,6 +188,7 @@ config :pleroma, :instance,    background_image: "/images/city.jpg",    instance_thumbnail: "/instance/thumbnail.jpeg",    limit: 5_000, +  description_limit: 5_000,    chat_limit: 5_000,    remote_limit: 100_000,    upload_limit: 16_000_000, diff --git a/lib/pleroma/upload.ex b/lib/pleroma/upload.ex index 797555bff..0fa6b89dc 100644 --- a/lib/pleroma/upload.ex +++ b/lib/pleroma/upload.ex @@ -63,6 +63,10 @@ defmodule Pleroma.Upload do      with {:ok, upload} <- prepare_upload(upload, opts),           upload = %__MODULE__{upload | path: upload.path || "#{upload.id}/#{upload.name}"},           {:ok, upload} <- Pleroma.Upload.Filter.filter(opts.filters, upload), +         description = Map.get(opts, :description) || upload.name, +         {_, true} <- +           {:description_limit, +            String.length(description) <= Pleroma.Config.get([:instance, :description_limit])},           {:ok, url_spec} <- Pleroma.Uploaders.Uploader.put_file(opts.uploader, upload) do        {:ok,         %{ @@ -75,9 +79,12 @@ defmodule Pleroma.Upload do               "href" => url_from_spec(upload, opts.base_url, url_spec)             }           ], -         "name" => Map.get(opts, :description) || upload.name +         "name" => description         }}      else +      {:description_limit, _} -> +        {:error, :description_too_long} +        {:error, error} ->          Logger.error(            "#{__MODULE__} store (using #{inspect(opts.uploader)}) failed: #{inspect(error)}" diff --git a/test/upload_test.exs b/test/upload_test.exs index 2abf0edec..b06b54487 100644 --- a/test/upload_test.exs +++ b/test/upload_test.exs @@ -107,6 +107,19 @@ defmodule Pleroma.UploadTest do    describe "Storing a file with the Local uploader" do      setup [:ensure_local_uploader] +    test "does not allow descriptions longer than the post limit" do +      clear_config([:instance, :description_limit], 2) +      File.cp!("test/fixtures/image.jpg", "test/fixtures/image_tmp.jpg") + +      file = %Plug.Upload{ +        content_type: "image/jpg", +        path: Path.absname("test/fixtures/image_tmp.jpg"), +        filename: "image.jpg" +      } + +      {:error, :description_too_long} = Upload.store(file, description: "123") +    end +      test "returns a media url" do        File.cp!("test/fixtures/image.jpg", "test/fixtures/image_tmp.jpg")  | 
