Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Ticket #2295 - Tolerate consecutive delimiters in query parameters

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2375 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information...
commit 17d2732b1cc50fd97685417080beb72d00609daf 1 parent 0c23f06
@jeremy jeremy authored
View
2  actionpack/CHANGELOG
@@ -1,5 +1,7 @@
*SVN*
+* Tolerate consecutive delimiters in query parameters. #2295 [darashi@gmail.com]
+
* Streamline render process, code cleaning. Closes #2294. [skae]
* Keep flash after components are rendered. #2291 [Rick Olson, Scott]
View
3  actionpack/lib/action_controller/cgi_ext/cgi_methods.rb
@@ -11,6 +11,9 @@ def CGIMethods.parse_query_parameters(query_string)
parsed_params = {}
query_string.split(/[&;]/).each { |p|
+ # Ignore repeated delimiters.
+ next if p.empty?
+
k, v = p.split('=',2)
v = nil if (v && v.empty?)
View
11 actionpack/test/controller/cgi_test.rb
@@ -14,6 +14,8 @@ def setup
"action=update_order&full_name=Lau%20Taarnskov&products=4&products=2&products=3"
@query_string_with_many_equal = "action=create_customer&full_name=abc=def=ghi"
@query_string_without_equal = "action"
+ @query_string_with_many_ampersands =
+ "&action=create_customer&&&full_name=David%20Heinemeier%20Hansson"
end
def test_query_string
@@ -66,7 +68,14 @@ def test_query_string_without_equal
CGIMethods.parse_query_parameters(@query_string_without_equal)
)
end
-
+
+ def test_query_string_with_many_ampersands
+ assert_equal(
+ { "action" => "create_customer", "full_name" => "David Heinemeier Hansson"},
+ CGIMethods.parse_query_parameters(@query_string_with_many_ampersands)
+ )
+ end
+
def test_parse_params
input = {
"customers[boston][first][name]" => [ "David" ],

0 comments on commit 17d2732

Please sign in to comment.
Something went wrong with that request. Please try again.