Bug #8103
closedFix for URI.decode_www_form ArgumentError
Description
URI.decode_www_form pukes out an ArgumentError if passed any parameter names that aren't followed by an equals sign. Because of this it can't decode some of the strings that were encoded with URI.encode_www_form:
irb> require 'uri'
=> true
irb> querystring = URI.encode_www_form 'a' => '1', 'b' => nil
=> "a=1&b"
irb> URI.decode_www_form querystring
ArgumentError: invalid data of application/x-www-form-urlencoded (a=1&b)
from /Users/misfo/.rbenv/versions/2.0.0-p0/lib/ruby/2.0.0/uri/common.rb:975:in decode_www_form' from (irb):3 from /Users/misfo/.rbenv/versions/2.0.0-p0/bin/irb:12:in
'
I've attached a patch
Files
Updated by Anonymous over 11 years ago
- Assignee set to akira (akira yamada)
Updated by naruse (Yui NARUSE) over 11 years ago
- Status changed from Open to Closed
- % Done changed from 0 to 100
This issue was solved with changeset r40460.
Trent, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.
-
lib/uri/common.rb (URI.decode_www_form): follow current URL Standard.
It gets encoding argument to specify the character encoding.
It now allows loose percent encoded strings, but denies ;-separator.
[ruby-core:53475] [Bug #8103] -
lib/uri/common.rb (URI.decode_www_form): follow current URL Standard.
It gets encoding argument to convert before percent encode.
Now UTF-16 strings aren't converted to UTF-8 before percent encode
by default.