Actions
Bug #1763
closedSecurityError on an Exception object because of modification of instance variable #__ThrowState__
Description
=begin
以下ような例で,例外オブジェクトのインスタンス変数 (#ThrowState) 操作の
SecurityError となり,適切な例外状況を捉えることができません.
cmd = proc{p "cmd: safe_level == #{$SAFE}"; raise SystemExit}
safe0_p = proc{|*args| p args}
proc{
$SAFE = 4
begin
cmd.call
rescue SystemExit => e
safe0_p["SystemExit: #{e.inspect}"]
raise e
rescue Exception => e
safe0_p["Exception (NOT SystemExit): #{e.inspect}"]
raise e
end
}.call
vm.c の vm_exec() の中で設定しようとしているため,ユーザによる対処が極めて困難です.
例外オブジェクトに untrust 設定しようにも,
$SAFE==0 の cmd から見て外側の safe level は分かりませんから
untrust すべきかどうか判断できませんし,
その外側は $SAFE==4 ですので untrust 設定する権限がありません.
=end
Actions
Like0
Like0Like0