From: Takeaki Kamada Date: 2003-10-24T16:48:08+09:00 Subject: [ruby-dev:21702] cgi.rb CGI#read_multipart のboundaryについて はじめまして鎌田と申します. 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