こんばんは、sheepman です。
$SAFE レベル 3 以上で定義されたメソッドの呼び出しを
$SAFE == 0 の時に禁止する、以下の先日の更新に関して質問です。
* eval.c (rb_call0): prohibit calling tainted method (>2) when
$SAFE == 0.
$SAFE == 1 の時に呼び出すことができて、$SAFE == 0 の時に出来ないというのは、
こういうものなのでしょうか。メーリングリストでの過去の議論へのポインタがもしあれば
紹介していただけるとうれしいです。
$ ruby-1.8 -ve '
Thread.new{
$SAFE = 3
class Hoge
def foo
p $SAFE
end
end
}
sleep 0.1
$SAFE = 0
Hoge.new.foo
'
ruby 1.8.3 (2005-09-18) [i686-linux]
-e:12:in `foo': calling insecure method: foo (SecurityError)
from -e:12
$ ruby-1.8 -ve '
Thread.new{
$SAFE = 3
class Hoge
def foo
p $SAFE
end
end
}
sleep 0.1
$SAFE = 1
Hoge.new.foo
'
ruby 1.8.3 (2005-09-18) [i686-linux]
3
--
sheepman / TAMURA Takashi
sheepman / sheepman.sakura.ne.jp http://sheepman.parfait.ne.jp/