ruby-changes:20421
From: xibbar <ko1@a...>
Date: Sat, 9 Jul 2011 14:32:30 +0900 (JST)
Subject: [ruby-changes:20421] xibbar:r32469 (trunk): * lib/cgi/core.rb: fix multipart form parsing bug. [Bug #3866]
xibbar 2011-07-09 14:32:19 +0900 (Sat, 09 Jul 2011) New Revision: 32469 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=32469 Log: * lib/cgi/core.rb: fix multipart form parsing bug. [Bug #3866] Modified files: trunk/ChangeLog trunk/lib/cgi/core.rb trunk/test/cgi/test_cgi_multipart.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 32468) +++ ChangeLog (revision 32469) @@ -1,3 +1,7 @@ +Sat Jul 9 14:02:20 2011 Takeyuki FUJIOKA <xibbar@r...> + + * lib/cgi/core.rb: fix multipart form parsing bug. [Bug #3866] + Sat Jul 9 11:41:03 2011 Marc-Andre Lafortune <ruby-core@m...> * lib/matrix.rb: Add Vector#normalize [ruby-dev:43829] Index: lib/cgi/core.rb =================================================================== --- lib/cgi/core.rb (revision 32468) +++ lib/cgi/core.rb (revision 32469) @@ -557,7 +557,6 @@ @files[name]=body end ## break loop - break if buf.size == 0 break if content_length == -1 end raise EOFError, "bad boundary end of body part" unless boundary_end =~ /--/ Index: test/cgi/test_cgi_multipart.rb =================================================================== --- test/cgi/test_cgi_multipart.rb (revision 32468) +++ test/cgi/test_cgi_multipart.rb (revision 32469) @@ -272,7 +272,7 @@ ex = assert_raise(EOFError) do cgi = RUBY_VERSION>="1.9" ? CGI.new(:accept_charset=>"UTF-8") : CGI.new end - assert_equal("bad boundary end of body part", ex.message) + assert_equal("bad content body", ex.message) # _prepare(@data) do |input| input2 = input.sub(/--(\r\n)?\z/, "") @@ -303,6 +303,19 @@ assert_equal('file1.html', cgi['file1'].original_filename) end + def test_cgi_multipart_boundary_10240 # [Bug #3866] + @boundary = 'AaB03x' + @data = [ + {:name=>'file', :value=>"b"*10134, + :filename=>'file.txt', :content_type=>'text/plain'}, + {:name=>'foo', :value=>"bar"}, + ] + _prepare(@data) + cgi = RUBY_VERSION>="1.9" ? CGI.new(:accept_charset=>"UTF-8") : CGI.new + assert_equal(cgi['foo'], 'bar') + assert_equal(cgi['file'].read, 'b'*10134) + end + ### self.instance_methods.each do |method| -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/