はじめまして鎌田と申します.
ruby 1.8.0 (2003-08-04) [i686-linux]を利用していて,さっきはまったのですが,
cgi.rbのCGI#read_multipart でマルチパートの終端のboundaryを
---------adabasha
としていると止まらなくなります.

どうもcgi.rbの837行目から始まる
buf = buf.sub(/\A((?:.|\n)*?)(?:#{EOL})?#{boundary}(#{EOL}|--)/n) do
	body.print $1
	if "--" == $2
		content_length = -1
	end
	""
end
この部分で,
if "--" == $2
となっているために,終端がEOLで終っている場合,終了条件が入らなくなっているようです.
正規表現ではEOLをマッチしているので
if "--" == $2 or EOL == $2
となればいいと思うのですが,いかがでしょうか?

RFC2388でも終端に--がない例がありますし,正規表現では入っているので単なるミスだと思うんですが….
http://www.ietf.org/rfc/rfc2388.txt

よろしくお願いします.

###diff -u
--- /usr/local/lib/ruby/1.8/cgi.rb      2003-07-26 11:26:05.000000000 +0900
+++ cgi.rb      2003-10-24 16:05:23.000000000 +0900
@@ -836,7 +836,7 @@

	buf = buf.sub(/\A((?:.|\n)*?)(?:#{EOL})?#{boundary}(#{EOL}|--)/n) do
	body.print $1
	-          if "--" == $2
	+          if "--" == $2 or EOL == $2
	content_length = -1
	end
	""

--
鎌田長明
東京大学大学院経済学研究科 M1
take / kamada.info