ruby-trunk-changes r39000 - r39003

今日は 拡張ライブラリ readline のビルドに関する修正と、不正なバイトストリームを与えられた時の Marshal.load のチェックの強化がありました。

kazu:r39000 2013-02-01 09:47:49 +0900

r38994 の ChangeLog エントリの typo 修正。

svn:r39001 2013-02-01 09:47:54 +0900

version.h の日付更新。

shugo:r39002 2013-02-01 14:37:29 +0900

拡張ライブラリ readline の extconf.rb で have_macro でマクロをチェックした時に HAVE_??? という定数が定義されないようで、 readline.c の中でそれをチェックしていたため常にマクロがないものとしてコンパイルされていたのを直接対象のマクロを defined? でチェックするようにしています。 [ruby-core:49561] [Bug #7397]

nobu:r39003 2013-02-01 16:35:37 +0900

Marshal.load で Class, Module をロードする時にインスタンス変数つきになっていると既存の Class, Module のインスタンス変数を上書きしてしまうため、チェックして禁止(例外を発生)しているようです。 Marshal.dump では Class, Module は単に名前をダンプして、load でもその名前を元に対応するそのプロセスでの既存のクラスを参照するようにするだけなのですが、フォーマット上インスタンス変数は修飾子的につけることができるので、わざとそのような文字列を作って Marshal.load に読ませると Class, Module のインスタンス変数を設定、変更できてしまうという問題を対処している、と理解しました。 昨日の r38999 で記述されていたのと同様の問題の対応だと思います。 [ruby-core:51765] [Bug #7759]