diff options
author | scarlett <nia@netbsd.org> | 2018-12-06 13:48:12 +0000 |
---|---|---|
committer | scarlett <nia@netbsd.org> | 2018-12-06 13:48:12 +0000 |
commit | 3dff61ebec4f4b216903d79261ec5cac80e70a08 (patch) | |
tree | 845cf99e7619596292c373774ec48946eae8e7ad /lib | |
parent | 6a6aaa0e1aade45bc2e3b68ee2c4686cc80f46cd (diff) | |
download | pleroma-3dff61ebec4f4b216903d79261ec5cac80e70a08.tar.gz |
Harden re: detection.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/web/activity_pub/mrf/ensure_re_prepended.ex | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/pleroma/web/activity_pub/mrf/ensure_re_prepended.ex b/lib/pleroma/web/activity_pub/mrf/ensure_re_prepended.ex index 06fafb3ee..a3b9c4616 100644 --- a/lib/pleroma/web/activity_pub/mrf/ensure_re_prepended.ex +++ b/lib/pleroma/web/activity_pub/mrf/ensure_re_prepended.ex @@ -3,13 +3,16 @@ defmodule Pleroma.Web.ActivityPub.MRF.EnsureRePrepended do @behaviour Pleroma.Web.ActivityPub.MRF + @have_re Regex.compile!("^re:[[:space:]]*", [:caseless]) def filter_by_summary( %{"summary" => parent_summary} = parent, %{"summary" => child_summary} = child ) - when not is_nil(child_summary) and child_summary == parent_summary and - byte_size(child_summary) > 1 do - if not String.starts_with?(child_summary, "re:") do + when not is_nil(child_summary) and byte_size(child_summary) > 0 and + not is_nil(parent_summary) and byte_size(parent_summary) > 0 do + if (child_summary == parent_summary and not Regex.match?(@have_re, child_summary)) or + (Regex.match?(@have_re, parent_summary) && + Regex.replace(@have_re, parent_summary, "") == child_summary) do Map.put(child, "summary", "re: " <> child_summary) else child |