はじめまして鎌田と申します.
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