aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrinpatch <rinpatch@sdf.org>2019-03-05 18:09:23 +0300
committerrinpatch <rinpatch@sdf.org>2019-03-05 18:09:23 +0300
commit4263edc9c9bbff17c7beb5495d6e7b4b4f8683ef (patch)
treea1301944404e9609356bbac6a9d75f1d1e60c7ce
parent10248d86a2ca333de8a44e28ab0b8cee70b5d5dd (diff)
downloadpleroma-4263edc9c9bbff17c7beb5495d6e7b4b4f8683ef.tar.gz
Properly escape reserved URI charachters in upload urls
-rw-r--r--lib/pleroma/upload.ex8
1 files changed, 5 insertions, 3 deletions
diff --git a/lib/pleroma/upload.ex b/lib/pleroma/upload.ex
index 91a5db8c5..1a97e9fde 100644
--- a/lib/pleroma/upload.ex
+++ b/lib/pleroma/upload.ex
@@ -85,6 +85,10 @@ defmodule Pleroma.Upload do
end
end
+ def char_unescaped?(char) do
+ URI.char_unreserved?(char) or char == ?/
+ end
+
defp get_opts(opts) do
{size_limit, activity_type} =
case Keyword.get(opts, :type) do
@@ -218,9 +222,7 @@ defmodule Pleroma.Upload do
defp url_from_spec(base_url, {:file, path}) do
path =
path
- |> URI.encode()
- |> String.replace("?", "%3F")
- |> String.replace(":", "%3A")
+ |> URI.encode(&char_unescaped?/1)
[base_url, "media", path]
|> Path.join()