>>>>> In [ruby-dev : No.22641] 
>>>>>	matz / ruby-lang.org (Yukihiro Matsumoto) wrote:
> ああ、そうか。でも、こんな変更のほうがよいと思います。
>
> --- lib/find.rb	20 Jan 2003 15:17:13 -0000	1.11
> +++ lib/find.rb	20 Jan 2004 03:47:09 -0000
> @@ -38,3 +38,4 @@ module Find
>        catch(:prune) do
> -	yield file
> +	yield file.dup
> +        file.untaint
>  	begin

これ(↑)にこれ(↓)を混ぜるとやっぱりSecurityErrorになってしまいます。

>>>>> In [ruby-core : No.02319] 
>>>>>	matz / ruby-lang.org (Yukihiro Matsumoto) wrote:
> In message "[BUG] Find.find("xyz") will yield "xyz" even if no such file exists"
> --- lib/find.rb	21 Jan 2004 16:47:18 -0000	1.12
> +++ lib/find.rb	31 Jan 2004 10:01:16 -0000
> @@ -38,2 +38,3 @@ module Find
>        catch(:prune) do
> +        next unless File.exist? file
>  	yield file.dup

後のものはまだCVSには入っていないようですが、
両方いれるとするとこんな感じでしょうか?

--- ruby-1.8.1/lib/find.rb	20 Jan 2003 15:17:13 -0000	1.11
+++ ruby-1.8.1/lib/find.rb	6 Feb 2004 07:02:38 -0000
@@ -36,7 +36,10 @@
     paths.collect!{|d| d.dup}
     while file = paths.shift
       catch(:prune) do
-	yield file
+	tfile = file.dup
+ 	file.untaint
+	next unless File.exist? file
+	yield tfile
 	begin
 	  if File.lstat(file).directory? then
 	    d = Dir.open(file)

-- 
やまだあきら / akira yamada <URL:http://arika.org>
Vine Caves, Ltd. <URL:http://vinecaves.com>
(akira / arika.org, akira / debian.org or akira / vinecaves.com)