Issue #10619 has been updated by Jim Posen.


In [r48934](https://bugs.ruby-lang.org/projects/ruby-trunk/repository/revisions/48934), why were both the RFC 2396 and RFC 3986 parsers changed to allow unescaped square brackets? The RFC 3986 spec does not allow square brackets. In @tenderlove's attached patch, [ and ] are still escaped when the RFC 3986 parser is used.

Also, the RFC 3986 parser accepts URIs with a % that is not followed by hex digits, which should be forbidden.

----------------------------------------
Bug #10619: URI::HTTP#query= behavior changed for 2396 uris
https://bugs.ruby-lang.org/issues/10619#change-52970

* Author: Aaron Patterson
* Status: Closed
* Priority: Normal
* Assignee: Yui NARUSE
* ruby -v: ruby 2.2.0dev (2014-12-18 trunk 48886) [x86_64-darwin14]
* Backport: 2.0.0: DONTNEED, 2.1: DONTNEED, 2.2: DONE
----------------------------------------
Hi,

r48244 changed the behavior of the query method on uri objects generated by the 2396 parser.  Here is a test to demonstrate the change:

~~~
require 'test/unit'
require 'uri'

module URI

class TestRFC2396 < Test::Unit::TestCase
  def test_query_on_parse
    parser = URI::RFC2396_Parser.new
    uri = parser.parse "http://www.example.com/parse?location[]=1"
    assert_equal 'location[]=1', uri.query
  end
end

end
~~~

This test passed before r48244.  I've attached a patch that fixes it and maintains the fix for Bug #10402

---Files--------------------------------
0001-use-the-parser-type-to-escape-the-query-string.patch (2.28 KB)


-- 
https://bugs.ruby-lang.org/