Do some basic escaping.
authorRoger Braun <roger@rogerbraun.net>
Wed, 14 Jun 2017 12:46:18 +0000 (14:46 +0200)
committerRoger Braun <roger@rogerbraun.net>
Wed, 14 Jun 2017 12:46:18 +0000 (14:46 +0200)
lib/pleroma/web/twitter_api/utils.ex
test/web/twitter_api/twitter_api_test.exs
test/web/twitter_api/twitter_api_utils_test.exs [new file with mode: 0644]

index 65d893869272c7e518e766d9fac005ccf0f54e3d..5cbe0cf9c96acb297a119b12bf9d95f2e25595be 100644 (file)
@@ -11,7 +11,7 @@ defmodule Pleroma.Web.TwitterAPI.Utils do
   def add_attachments(text, attachments) do
     attachment_text = Enum.map(attachments, fn
       (%{"url" => [%{"href" => href} | _]}) ->
-        "<a href='#{href}' class='attachment'>#{Path.basename(href)}</a>"
+        "<a href=\"#{URI.encode(href)}\" class='attachment'>#{Path.basename(href)}</a>"
       _ -> ""
     end)
     Enum.join([text | attachment_text], "<br>\n")
index da880e67c5652e6b8d5dc6a94b69b20d6f6f73d7..6848413cc98d09813b2b2170c9dac46fa1fa1cef 100644 (file)
@@ -34,7 +34,7 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPITest do
 
     { :ok, activity = %Activity{} } = TwitterAPI.create_status(user, input)
 
-    assert get_in(activity.data, ["object", "content"]) == "Hello again, <a href='shp'>@shp</a>.<br>\nThis is on another line. #2hu #epic #phantasmagoric<br>\n<a href='http://example.org/image.jpg' class='attachment'>image.jpg</a>"
+    assert get_in(activity.data, ["object", "content"]) == "Hello again, <a href='shp'>@shp</a>.<br>\nThis is on another line. #2hu #epic #phantasmagoric<br>\n<a href=\"http://example.org/image.jpg\" class='attachment'>image.jpg</a>"
     assert get_in(activity.data, ["object", "type"]) == "Note"
     assert get_in(activity.data, ["object", "actor"]) == user.ap_id
     assert get_in(activity.data, ["actor"]) == user.ap_id
diff --git a/test/web/twitter_api/twitter_api_utils_test.exs b/test/web/twitter_api/twitter_api_utils_test.exs
new file mode 100644 (file)
index 0000000..62aa784
--- /dev/null
@@ -0,0 +1,14 @@
+defmodule Pleroma.Web.TwitterAPI.UtilsTest do
+  alias Pleroma.Web.TwitterAPI.Utils
+  use Pleroma.DataCase
+
+  test "it adds attachment links to a given text and attachment set" do
+    attachment = %{
+      "url" => [%{"href" => "http://heise.de/i\"m a boy.png"}]
+    }
+
+    res = Utils.add_attachments("", [attachment])
+
+    assert res == "<br>\n<a href=\"http://heise.de/i%22m%20a%20boy.png\" class='attachment'>i\"m a boy.png</a>"
+  end
+end