summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorGo MAEDA <maeda@farend.jp>2022-10-17 13:35:20 +0000
committerGo MAEDA <maeda@farend.jp>2022-10-17 13:35:20 +0000
commit1d9f5c67426a8e05eb94a0bdce4ea7d7a837f595 (patch)
treeba6c0c0bce5128c88bfa0dee0488b26dad9549ce /lib
parent823080b45e58563f989b992789ed340d358ed955 (diff)
downloadredmine-1d9f5c67426a8e05eb94a0bdce4ea7d7a837f595.tar.gz
redmine-1d9f5c67426a8e05eb94a0bdce4ea7d7a837f595.zip
Escape tags that start with pre (#37767).
Patch by Holger Just. git-svn-id: https://svn.redmine.org/redmine/trunk@21902 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'lib')
-rw-r--r--lib/redmine/wiki_formatting/textile/redcloth3.rb12
1 files changed, 7 insertions, 5 deletions
diff --git a/lib/redmine/wiki_formatting/textile/redcloth3.rb b/lib/redmine/wiki_formatting/textile/redcloth3.rb
index b935db6b9..c292926a5 100644
--- a/lib/redmine/wiki_formatting/textile/redcloth3.rb
+++ b/lib/redmine/wiki_formatting/textile/redcloth3.rb
@@ -1208,13 +1208,15 @@ class RedCloth3 < String
end
end
- ALLOWED_TAGS = %w(redpre pre code kbd notextile)
+ ALLOWED_TAGS = %w(pre code kbd notextile)
def escape_html_tags(text)
- text.gsub!(%r{<(\/?([!\w]+)[^<>\n]*)(>?)}) do |m|
- if ALLOWED_TAGS.include?($2) && $3.present?
- "<#{$1}#{$3}"
+ text.gsub!(%r{<(\/?([!\w][^ >\t\f\r\n]*)[^<>\n]*)(>?)}) do |m|
+ all, tag, close = $1, $2, $3
+
+ if close.present? && (ALLOWED_TAGS.include?(tag) || (tag =~ /\Aredpre#\d+\z/))
+ "<#{all}#{close}"
else
- "&lt;#{$1}#{'&gt;' unless $3.blank?}"
+ "&lt;#{all}#{'&gt;' unless close.blank?}"
end
end
end