Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit ecb9f7e

Browse files
hsbtnagachika
authored andcommitted
Merge cgi-0.4.2
1 parent e588271 commit ecb9f7e

File tree

7 files changed

+32
-9
lines changed

7 files changed

+32
-9
lines changed

lib/cgi.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@
288288
#
289289

290290
class CGI
291-
VERSION = "0.4.1"
291+
VERSION = "0.4.2"
292292
end
293293

294294
require 'cgi/core'

lib/cgi/cgi.gemspec

+2-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ Gem::Specification.new do |spec|
2525
spec.executables = []
2626

2727
spec.files = [
28-
"LICENSE.txt",
28+
"COPYING",
29+
"BSDL",
2930
"README.md",
3031
*Dir["lib{.rb,/**/*.rb}", "bin/*"] ]
3132

lib/cgi/cookie.rb

+3-2
Original file line numberDiff line numberDiff line change
@@ -190,9 +190,10 @@ def self.parse(raw_cookie)
190190
values ||= ""
191191
values = values.split('&').collect{|v| CGI.unescape(v,@@accept_charset) }
192192
if cookies.has_key?(name)
193-
values = cookies[name].value + values
193+
cookies[name].concat(values)
194+
else
195+
cookies[name] = Cookie.new(name, *values)
194196
end
195-
cookies[name] = Cookie.new(name, *values)
196197
end
197198

198199
cookies

lib/cgi/session/pstore.rb

+5-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,10 @@
1111
# cgi/session.rb for more details on session storage managers.
1212

1313
require_relative '../session'
14-
require 'pstore'
14+
begin
15+
require 'pstore'
16+
rescue LoadError
17+
end
1518

1619
class CGI
1720
class Session
@@ -82,7 +85,7 @@ def delete
8285
File::unlink path
8386
end
8487

85-
end
88+
end if defined?(::PStore)
8689
end
8790
end
8891
# :enddoc:

lib/cgi/util.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ def unescapeHTML(string)
184184
def escapeElement(string, *elements)
185185
elements = elements[0] if elements[0].kind_of?(Array)
186186
unless elements.empty?
187-
string.gsub(/<\/?(?:#{elements.join("|")})(?!\w)(?:.|\n)*?>/i) do
187+
string.gsub(/<\/?(?:#{elements.join("|")})\b[^<>]*+>?/im) do
188188
CGI.escapeHTML($&)
189189
end
190190
else
@@ -204,7 +204,7 @@ def escapeElement(string, *elements)
204204
def unescapeElement(string, *elements)
205205
elements = elements[0] if elements[0].kind_of?(Array)
206206
unless elements.empty?
207-
string.gsub(/&lt;\/?(?:#{elements.join("|")})(?!\w)(?:.|\n)*?&gt;/i) do
207+
string.gsub(/&lt;\/?(?:#{elements.join("|")})\b(?>[^&]+|&(?![gl]t;)\w+;)*(?:&gt;)?/im) do
208208
unescapeHTML($&)
209209
end
210210
else

test/cgi/test_cgi_session.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ def test_cgi_session_pstore
9191
assert_equal(value1,session["key1"])
9292
assert_equal(value2,session["key2"])
9393
session.close
94-
end
94+
end if defined?(::PStore)
9595
def test_cgi_session_specify_session_id
9696
update_env(
9797
'REQUEST_METHOD' => 'GET',

test/cgi/test_cgi_util.rb

+18
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,14 @@ def test_cgi_escapeElement
269269
assert_equal("<BR>&lt;A HREF=&quot;url&quot;&gt;&lt;/A&gt;", escapeElement('<BR><A HREF="url"></A>', ["A", "IMG"]))
270270
assert_equal("<BR>&lt;A HREF=&quot;url&quot;&gt;&lt;/A&gt;", escape_element('<BR><A HREF="url"></A>', "A", "IMG"))
271271
assert_equal("<BR>&lt;A HREF=&quot;url&quot;&gt;&lt;/A&gt;", escape_element('<BR><A HREF="url"></A>', ["A", "IMG"]))
272+
273+
assert_equal("&lt;A &lt;A HREF=&quot;url&quot;&gt;&lt;/A&gt;", escapeElement('<A <A HREF="url"></A>', "A", "IMG"))
274+
assert_equal("&lt;A &lt;A HREF=&quot;url&quot;&gt;&lt;/A&gt;", escapeElement('<A <A HREF="url"></A>', ["A", "IMG"]))
275+
assert_equal("&lt;A &lt;A HREF=&quot;url&quot;&gt;&lt;/A&gt;", escape_element('<A <A HREF="url"></A>', "A", "IMG"))
276+
assert_equal("&lt;A &lt;A HREF=&quot;url&quot;&gt;&lt;/A&gt;", escape_element('<A <A HREF="url"></A>', ["A", "IMG"]))
277+
278+
assert_equal("&lt;A &lt;A ", escapeElement('<A <A ', "A", "IMG"))
279+
assert_equal("&lt;A &lt;A ", escapeElement('<A <A ', ["A", "IMG"]))
272280
end
273281

274282

@@ -277,6 +285,16 @@ def test_cgi_unescapeElement
277285
assert_equal('&lt;BR&gt;<A HREF="url"></A>', unescapeElement(escapeHTML('<BR><A HREF="url"></A>'), ["A", "IMG"]))
278286
assert_equal('&lt;BR&gt;<A HREF="url"></A>', unescape_element(escapeHTML('<BR><A HREF="url"></A>'), "A", "IMG"))
279287
assert_equal('&lt;BR&gt;<A HREF="url"></A>', unescape_element(escapeHTML('<BR><A HREF="url"></A>'), ["A", "IMG"]))
288+
289+
assert_equal('<A <A HREF="url"></A>', unescapeElement(escapeHTML('<A <A HREF="url"></A>'), "A", "IMG"))
290+
assert_equal('<A <A HREF="url"></A>', unescapeElement(escapeHTML('<A <A HREF="url"></A>'), ["A", "IMG"]))
291+
assert_equal('<A <A HREF="url"></A>', unescape_element(escapeHTML('<A <A HREF="url"></A>'), "A", "IMG"))
292+
assert_equal('<A <A HREF="url"></A>', unescape_element(escapeHTML('<A <A HREF="url"></A>'), ["A", "IMG"]))
293+
294+
assert_equal('<A <A ', unescapeElement(escapeHTML('<A <A '), "A", "IMG"))
295+
assert_equal('<A <A ', unescapeElement(escapeHTML('<A <A '), ["A", "IMG"]))
296+
assert_equal('<A <A ', unescape_element(escapeHTML('<A <A '), "A", "IMG"))
297+
assert_equal('<A <A ', unescape_element(escapeHTML('<A <A '), ["A", "IMG"]))
280298
end
281299
end
282300

0 commit comments

Comments
 (0)