From: sheepman Date: 2007-03-19T08:42:58+09:00 Subject: [ruby-dev:30626] Re: dl when $SAFE = 1 こんにちは、sheepman です。 On Mon, 19 Mar 2007 03:59:37 +0900 Takaaki Tateishi wrote: > dlopenについてはdlopenによって何が危険になるのかの議論が必要だと思います。 > > 以上のことから、systemとdlopenの件はどれが適切なのか私には判断できません。 「拡張ライブラリが提供すべきセキュリティは何か」などを考えると泥沼にハマって 答が出ないので、ruby 本体がやっていること http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=%A5%BB%A5%AD%A5%E5%A5%EA%A5%C6%A5%A3%A5%E2%A5%C7%A5%EB に合わせることが、開発者にとってもユーザにとっても分かりやすいんじゃないかなと、 僕は思います。 > > mallocによって得たオブジェクトがtaintedであるべきかどうかについては、すべて > 定数から構成されたオブジェクトも危険だとすべきなのかと疑問があります。 > その後の中身の変更でtaintedにしなければならない場合がありそうなことは想像で > きますが、allocateの中でtaintedにする理由はどこにあるのでしょうか? > 立石さんが書かれたコードから立石さんの意図を推測した結果です。 それ以外の理由はありません。 String#to_ptr と Array#to_ptr がセーフレベルによらず、また変換前の 文字列や配列が汚染されているかどうかに依存せず、常に汚染された PtrData を 返していたので、PtrData.new もそれらに合わせて常に汚染されたオブジェクトを 返した方がいいのかなあという、軽い気持ちです。 -- sheepman / TAMURA Takashi sheepman@sheepman.sakura.ne.jp