ruby-trunk-changes r39205 - r39210

今日も MirOS BSD 向けのビルド設定の修正と、拡張ライブラリ json脆弱性対応を含むバージョンアップがありました。

akr:r39205 2013-02-11 23:26:01 +0900

MirOS BSD 向けにオブジェクトを確保するヒープのアライメントの設定を configure で検出する処理を OpenBSD と同じものを利用するようにしています。 [ruby-core:42158] [Bug #5901]

akr:r39206 2013-02-12 01:40:47 +0900

r39205 で追加した configure.in のコメントに ML とチケットの参照を追記しています。

svn:r39207 2013-02-12 01:40:52 +0900

version.h の日付更新。

naruse:r39208 2013-02-12 12:05:45 +0900

拡張ライブラリ json を 1.7.7 に更新しています。このアップデートには悪意ある文字列を JSON.parse に渡すと Symbol を生成し、Symbol が GC されないことで DOS 攻撃に利用される可能性があるという脆弱性問題に対して、JSON.parse に create_additions オプションを追加してこれを明示的に true に指定しないと任意のオブジェクトを生成する挙動はしないようにしているようです。 https://github.com/flori/json/commit/d0a62f3ced7560daba2ad546d83f0479a5ae2cf2 https://groups.google.com/d/topic/rubyonrails-security/4_YvCpLzL58/discussion
なお JSON.load ではこの対応は入っていないので、 JSON.load には信頼できない文字列を渡してはダメだそうです。
ついでに JSON のオブジェクトのネストの深さの制限を拡張しているっぽい(19 -> 100)変更も入っています。

naruse:r39209 2013-02-12 12:18:04 +0900

String#crypt のテストのために crypt(3) の実装を確認するため libc.so を実行して*1そのバージョンを取得しようとしている部分で、実行する libc.so.6 のパスを RbConfig の libdir から取得していたのですが、実際に実行中の ruby がリンクしている libc.so.6 のパスを ldd コマンドで取得してそれを使うようにしています。 [ruby-core:52129] [Bug #7828]

naruse:r39210 2013-02-12 12:22:33 +0900

test/ruby/test_m17n.rb でエンコーディングに関する警告メッセージがでるテストを EnvUtil.suppress_warning のブロックで囲って警告抑制しています。

*1:共有ライブラリは実行形式ファイルとして実行することもできる