From: Yukihiro Matsumoto Date: 2008-12-20T22:47:11+09:00 Subject: [ruby-dev:37512] Re: [Bug #884] Insecure operation: -r まつもと ゆきひろです In message "Re: [ruby-dev:37446] [Bug #884] Insecure operation: -r" on Mon, 15 Dec 2008 19:58:41 +0900, Kazuhiro NISHIYAMA writes: |以下のようにするとエラーメッセージの中に謎の-rが出てきます。 | |% ruby-trunk -ve '$SAFE=4;open("")' |ruby 1.9.1 (2008-12-14 revision 20736) [i686-linux] |-e:1:in `open': Insecure operation: -r (SecurityError) | from -e:1:in `
' |% メソッド(open)の中でrb_check_safe_obj()が呼ばれてエラーになっ た時、そのメソッドがトップレベルで呼ばれた場合、 rb_frame_callee()がNULLであるため、-rで発生したエラーと勘違 いするせいのようです。 rb_check_safe_obj()では、トップレベルで呼ばれたメソッドと、 実行環境が発生する前(-r)を区別する必要がありそうです。どうやっ て区別できるのかちょっと調べてみますね。