From: Kazuhiko <kazuhiko@...>
Date: 2011-09-28T21:15:58+09:00
Subject: [ruby-dev:44560] Re: [Ruby 1.9 - Bug #5279]  	$SAFEが3以上の時にString#encodeがSecurityErrorを発生させるケースがある

かずひこです。

On 26/09/2011 19:19, Shugo Maeda wrote:
>>> Yuguiさんが1.9.3ブランチにバックポートしてくださって、先ほどめでたく
>>> 1.9.3RC1が出た今ころになって気づいて、ものすごく申し訳ないのです
>>> が、$SAFE=3の時は動くけれど、$SAFE=4だと相変わらず失敗するようです。
> (snip)
>> r33328 で直ったようですが、1.9.3に入れますか?みなさんの意見が聞きたいです。
>> 正直ぼくのなかでは重要度は微妙なんですけど、このままだた1.9.[234] でそれぞれ
>> 仕様が違うという事態になるので、それもいかがなものかと思い悩んでいます。
> 
> アプリケーション側のworkaroundとしては、$SAFE >= 4のサンドボックス内で
> 使用を許可したい変換表を$SAFE == 0のときにあらかじめロードしておくとい
> う手があるので、tDiaryのケースでそれが現実的な解となるかどうかが、一つの
> 判断材料ですね。

Yuguiさんの言うように、重要度は微妙というのには同意します。すくなくとも
tDiary的には、上記のワークアラウンドですでに回避できているので、まあ困ら
ないといえば困りません。

> $SAFEが4以上の時はグローバルな状態の変更が禁止されるという原則があった
> と思うんですが、このケースはそれに抵触しないのかなというのがちょっと気に
> なります。影響は限定的なので実害はない気がするのですが。

この修正の結果「グローバルな状態が変更される」のは、あくまでも(現状の)
実装の都合による副作用であって、それが理由でこの修正をrevertすることは無
いんじゃないかなと思います。
それはそれとして、1.9.3に対しては、タイミングが遅すぎたと思うので、「も
はや仕様は完全に凍結するという原則論を優先します」というYuguiさんの判断
に異論はありません。

> 1.9.[234]で仕様が違うという点については、どうせ$SAFEは2.0で削除すべきだ
> と思うので、あんまり気にしなくてもいいんじゃないでしょうか。

レンタルtDiaryの運営者としては、このissueそのものよりも↑こっちの方が気に
なります。:)

かずひこ