diff --git a/ChangeLog b/ChangeLog index b0b696c8e0..3cfe73024a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Mon Dec 4 08:32:25 2006 Shugo Maeda + + * lib/cgi.rb (CGI::QueryExtension::read_multipart): should quote + boundary. JVN#84798830 + Sun Dec 3 16:16:53 2006 Akinori MUSHA * ext/digest/lib/digest/hmac.rb: Fix problems with update diff --git a/lib/cgi.rb b/lib/cgi.rb index 8fc7061eca..440d3bef90 100644 --- a/lib/cgi.rb +++ b/lib/cgi.rb @@ -977,6 +977,7 @@ class CGI def read_multipart(boundary, content_length) params = Hash.new([]) boundary = "--" + boundary + quoted_boundary = Regexp.quote(boundary, "n") buf = "" bufsize = 10 * 1024 boundary_end="" @@ -996,7 +997,7 @@ class CGI head = nil body = MorphingBody.new - until head and /#{boundary}(?:#{EOL}|--)/n.match(buf) + until head and /#{quoted_boundary}(?:#{EOL}|--)/n.match(buf) if (not head) and /#{EOL}#{EOL}/n.match(buf) buf = buf.sub(/\A((?:.|\n)*?#{EOL})#{EOL}/n) do head = $1.dup @@ -1022,7 +1023,7 @@ class CGI content_length -= c.size end - buf = buf.sub(/\A((?:.|\n)*?)(?:[\r\n]{1,2})?#{boundary}([\r\n]{1,2}|--)/n) do + buf = buf.sub(/\A((?:.|\n)*?)(?:[\r\n]{1,2})?#{quoted_boundary}([\r\n]{1,2}|--)/n) do body.print $1 if "--" == $2 content_length = -1