[#23884] Ruby 1.8.2 preview1にむけて — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

34 messages 2004/07/13
[#23917] Re: Ruby 1.8.2 preview1にむけて — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/07/16

山本です。

[#23920] Re: Ruby 1.8.2 preview1にむけて — "NAKAMURA, Hiroshi" <nakahiro@...> 2004/07/16

なひです。

[#23922] ruby 1.8.2 preview1 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

27 messages 2004/07/16

[#23995] String#each -> String#each_char — Shugo Maeda <shugo@...>

前田です。

27 messages 2004/07/30
[#23996] Re: String#each -> String#each_char — matz@... (Yukihiro Matsumoto) 2004/07/30

まつもと ゆきひろです

[#23997] Re: String#each -> String#each_char — "U.Nakamura" <usa@...> 2004/07/30

こんにちは、なかむら(う)です。

[#23999] Re: String#each -> String#each_char — matz@... (Yukihiro Matsumoto) 2004/07/30

まつもと ゆきひろです

[#24000] Re: String#each -> String#each_char — "U.Nakamura" <usa@...> 2004/07/30

こんにちは、なかむら(う)です。

[#24005] Re: String#each -> String#each_char — Minero Aoki <aamine@...> 2004/07/31

青木です。

[#24012] Re: String#each -> String#each_char — Shugo Maeda <shugo@...> 2004/08/01

前田です。

[#24014] Re: String#each -> String#each_char — Minero Aoki <aamine@...> 2004/08/02

青木です。

[ruby-dev:23876] cgi, cgi/session

From: 堀川 久 <vzw00011@...>
Date: 2004-07-10 04:56:37 UTC
List: ruby-dev #23876
こんにちは。

次の点を修正するパッチを書きました。よろしかったら取り入れてください。

 ・Session#delete()がエラーになることがある
 ・妥当性を確認せずにuntaintするのはどうかと
  ・空のフォームデータでエラーになることがある
 ・CGI#[]をもっとシンプルに

read_multipart()は、きちんと書き直したほうがよさそうですが、単にエラー
回避のコードを足しました。

CGI#[]は、変なものを返されたら本当に困ります。

よろしくお願いします。

-- 
HORIKAWA Hisashi (in Kanji: 堀川 久)
Netsphere Laboratories  http://www.nslabs.jp/

Attachments (1)

ruby-1.8.2-20040708-q1.diff (2.68 KB, text/x-diff)
diff -Naur ruby-1.8.2-20040708.orig/lib/cgi/session.rb ruby-1.8.2-20040708-cur/lib/cgi/session.rb
--- ruby-1.8.2-20040708.orig/lib/cgi/session.rb	2004-05-20 13:28:36.000000000 +0900
+++ ruby-1.8.2-20040708-cur/lib/cgi/session.rb	2004-07-10 13:45:45.354286880 +0900
@@ -365,7 +365,6 @@
 	  raise ArgumentError, "session_id `%s' is invalid" % id
 	end
 	@path = dir+"/"+prefix+id
-	@path.untaint
 	unless File::exist? @path
 	  @hash = {}
 	end
@@ -413,7 +412,10 @@
 
       # Close and delete the session's FileStore file.
       def delete
-	File::unlink @path
+        begin
+          File::unlink @path
+        rescue Errno::ENOENT
+        end
       end
     end
 
diff -Naur ruby-1.8.2-20040708.orig/lib/cgi.rb ruby-1.8.2-20040708-cur/lib/cgi.rb
--- ruby-1.8.2-20040708.orig/lib/cgi.rb	2004-05-27 16:50:04.000000000 +0900
+++ ruby-1.8.2-20040708-cur/lib/cgi.rb	2004-07-10 13:42:09.268136968 +0900
@@ -971,11 +971,12 @@
 
       # start multipart/form-data
       stdinput.binmode if defined? stdinput.binmode
-      boundary_size = boundary.size + EOL.size
-      content_length -= boundary_size
-      status = stdinput.read(boundary_size)
+      content_length -= boundary.size + 2
+      status = stdinput.read(boundary.size + 2)
       if nil == status
         raise EOFError, "no content body"
+      elsif status == boundary + "--"
+        return params
       elsif boundary + EOL != status
         raise EOFError, "bad content body"
       end
@@ -1125,37 +1126,12 @@
       @multipart
     end
 
-    class Value < DelegateClass(String)    # :nodoc:
-      def initialize(str, params)
-        @params = params
-        super(str)
-      end
-      def [](idx, *args)
-        if args.size == 0
-          warn "#{caller(1)[0]}:CAUTION! cgi['key'] == cgi.params['key'][0]; if want Array, use cgi.params['key']"
-          self
-        else
-          self.to_s[idx,*args]
-        end
-      end
-      def first
-        warn "#{caller(1)[0]}:CAUTION! cgi['key'] == cgi.params['key'][0]; if want Array, use cgi.params['key']"
-        self
-      end
-      alias last first
-      def to_a
-        @params || [self]
-      end
-      alias to_ary to_a   	# to be rhs of multiple assignment
-    end
-
     # Get the value for the parameter with a given key.
     #
     # If the parameter has multiple values, only the first will be 
     # retrieved; use #params() to get the array of values.
     def [](key)
-      params = @params[key]
-      value = params[0]
+      value = @params[key].first
       if @multipart
         if value
           return value
@@ -1165,7 +1141,7 @@
           Tempfile.new("CGI")
         end
       else
-        Value.new(value || "", params)
+        value || ""
       end
     end
 

In This Thread

Prev Next