[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]