From: nobu.nakada@... Date: 2003-09-12T18:59:09+09:00 Subject: [ruby-dev:21377] Re: $SAFE=4 でのautoload なかだです。 At Tue, 9 Sep 2003 01:34:09 +0900, Yukihiro Matsumoto wrote: > より正確には、requireには以下のセキュリティチェックがあります。 > > (a) feature名がtaintedかどうか > (b) loadするpathが安全かどうか > > autoloadの場合、このうち(a)は呼んだ時点でチェックします。 > (b)の方はload時ですが、これはautoloadを呼んだ時点の$SAFEの値 > でチェックする必要があります。最後に実行そのものは0で実行さ > れるべきです。 pathのチェックはautoload時点の$SAFEになっていないようです。 $ ./ruby -v -e 'autoload(:Etc, "etc")' \ -e 'def safe(n=4) proc{$SAFE=n;yield}.call; end' \ -e 'p safe{Etc}' ruby 1.8.0 (2003-09-12) [i686-linux] -e:3: Insecure operation at level 4 (SecurityError) from -e:3:in `safe' from -e:2:in `call' from -e:2:in `safe' from -e:3 -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦