aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorscarlett <nia@netbsd.org>2018-12-06 13:48:12 +0000
committerscarlett <nia@netbsd.org>2018-12-06 13:48:12 +0000
commit3dff61ebec4f4b216903d79261ec5cac80e70a08 (patch)
tree845cf99e7619596292c373774ec48946eae8e7ad /lib
parent6a6aaa0e1aade45bc2e3b68ee2c4686cc80f46cd (diff)
downloadpleroma-3dff61ebec4f4b216903d79261ec5cac80e70a08.tar.gz
Harden re: detection.
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/activity_pub/mrf/ensure_re_prepended.ex9
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