summaryrefslogtreecommitdiff
path: root/lib/cgi
diff options
authorHiroshi SHIBATA <[email protected]>2025-02-21 15:53:31 +0900
committergit <[email protected]>2025-02-26 07:34:04 +0000
commit237ab21f25b0a062ce6a272e0586d00778a6f20b (patch)
treebb8d043dd1d271c505004db4efb491b91217d34f /lib/cgi
parentfc60a04de958d4ba94fbdf82af94017b963dea7e (diff)
[ruby/cgi] Escape/unescape unclosed tags as well
https://github.com/ruby/cgi/commit/cd1eb08076 Co-authored-by: Nobuyoshi Nakada <[email protected]>
Diffstat (limited to 'lib/cgi')
-rw-r--r--lib/cgi/util.rb4
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/cgi/util.rb b/lib/cgi/util.rb
index 4986e544e0..5f12eae130 100644
--- a/lib/cgi/util.rb
+++ b/lib/cgi/util.rb
@@ -184,7 +184,7 @@ module CGI::Util
def escapeElement(string, *elements)
elements = elements[0] if elements[0].kind_of?(Array)
unless elements.empty?
- string.gsub(/<\/?(?:#{elements.join("|")})(?!\w)(?:.|\n)*?>/i) do
+ string.gsub(/<\/?(?:#{elements.join("|")})\b[^<>]*+>?/im) do
CGI.escapeHTML($&)
end
else
@@ -204,7 +204,7 @@ module CGI::Util
def unescapeElement(string, *elements)
elements = elements[0] if elements[0].kind_of?(Array)
unless elements.empty?
- string.gsub(/&lt;\/?(?:#{elements.join("|")})(?!\w)(?:.|\n)*?&gt;/i) do
+ string.gsub(/&lt;\/?(?:#{elements.join("|")})\b(?>[^&]+|&(?![gl]t;)\w+;)*(?:&gt;)?/im) do
unescapeHTML($&)
end
else