ruby-trunk-changes r39362 - r39384

今日は REXML の脆弱性対策が入っており、これにより 1.9.3-p392 がリリースされています。更新をお勧めします。 http://www.ruby-lang.org/ja/news/2013/02/22/ruby-1-9-3-p392-is-released/
その他 multiarch の追加対応、RubyGems の拡張ライブラリインストールの不具合修正、ドキュメントの修正などがありました。

zzak:r39362 2013-02-22 02:35:32 +0900

標準添付ライブラリ abbrev.rb の rdoc コメントのちょっとした修正。

zzak:r39363 2013-02-22 02:39:00 +0900

r39362 の ChangeLog に記載した Github の URL の typo 修正。

drbrain:r39364 2013-02-22 06:27:25 +0900

doc/globals.rdoc に $VERBOSE についての説明の説明を正確にしているのと $-w, $-v についての説明を $VERBOSE の別名と変更しています。 [ruby-core:52620] [Bug #7899]
$-v とか $-w とかあるの知らなかった。

drbrain:r39365 2013-02-22 06:31:09 +0900

doc/globals.rdoc の $DEBUG の説明を詳細化しています。

drbrain:r39366 2013-02-22 07:05:09 +0900

RubyGem で拡張ライブラリを含む gem パッケージのインストール時にインストール先のディレクトリができていない場合があり、インストール前にディレクトリを作成するようにしています。 ディレクトリが存在しないの mkmf.rb の r38864 での変更で入った現象のようですが、これは意図的なので RubyGems 側で対処することになった模様。 [ruby-core:52614] [Bug #7897]

nobu:r39367 2013-02-22 09:05:51 +0900

r39301 でシグナルハンドラでの backtrace(3) がスタックを辿れるかのチェックを configure でする時にコンパイルするテストプログラムが fprintf() していたので削っています。

nobu:r39368 2013-02-22 09:05:55 +0900

標準添付ライブラリ un.rb (-r オプションと一緒に使って ruby -run とできるようにするための命名)でファイル書き込み失敗時のエラーメッセージを -v オプションつきの時だけ出力するようにしています。

zzak:r39369 2013-02-22 11:01:28 +0900

Numeric#integer?, Numeric#to_int, Float#divmod の rdoc コメントのマークアップの修正やサンプルコードの追記など。

zzak:r39370 2013-02-22 11:11:26 +0900

Enumerable#chunk の rdoc コメントのサンプルコード修正やマークアップ修正、英語の修正など。

nobu:r39371 2013-02-22 11:33:44 +0900

multiarch 関連の修正です。 mkmf.rb で $DEFLIBPATH として Makefile に埋め込む変数名を RbConfig::CONFIG["libdirname"] から取得するようにしています。 [ruby-core:52395] [Bug #7874]

nobu:r39372 2013-02-22 11:36:48 +0900

RbConfig のテスト(主に multiarch 向け)で configure のオプションで変更された変数などをチェック対象から外すようにしています。 [ruby-core:52623] [Bug #7902]

nobu:r39373 2013-02-22 11:37:51 +0900

tool/mkrunnable.rb のリファクタリングと multiarch 対応だそうです。というコメントだけでリファクタリングと変更を混ぜられると変更がわからなくなってしまうので勘弁してください。多分 relative_path_from と ln_relative といったメソッドが導入されて、multiarch によるディレクトリ構成のバリエーションを吸収してロードパスへのシンボリックリンクを作成できるようにしているのだと思います。

nobu:r39374 2013-02-22 11:53:54 +0900

r39349 で test/ruby/test_process.rb に入った関係なさそうな sleep を削除しています。
あーこれ kosaki さんに確認するの忘れてた。

nobu:r39375 2013-02-22 11:58:53 +0900

r38934 で導入した test/ruby/test_process.rb の assert_fail_too_long_path という独自に定義した assertion 用メソッドの引数を間違えていたので修正して、ついでに第2引数のメッセージを省略不可能にしています。
これも ruby-trunk-changes に書いただけで指摘するの忘れてた……。

nobu:r39376 2013-02-22 12:46:47 +0900

Array#sample など乱数生成のために rb_random_ulong_limited() を呼ぶときに内部で呼ばれる乱数生成用の rand メソッドが負の整数を返した時の例外メッセージを修正しています。負の数なのに "too big" というメッセージになっていたので "too small" にしています。 [ruby-dev:47061] [Bug #7903]

ngoto:r39382 2013-02-22 15:02:54 +0900

r39354 で Solaris 版の時にコンパイルされる部分に文法エラーがあったのを修正しています。 [ruby-dev:44082] [Bug #5014]

naruse:r39383 2013-02-22 17:37:16 +0900

r39372 での RbConfig のテストの変更を再修正しています。 configure のオプションを取得するのに CONFIG を参照していたのを RbConfig::CONFIG に変更しています。

usa:r39384 2013-02-22 18:35:46 +0900

REXML へ不正なデータを渡して巨大な String を生成させる DOS 攻撃が可能な脆弱性に対する対策が施されています。 詳細についてはこちら http://www.ruby-lang.org/ja/news/2013/02/22/rexml-dos-2013-02-22/
これと r39208 で対応した JSON.load の脆弱性対策を合わせて security fix として ruby 1.9.3-p392 がリリースされています。 リリースお疲れさまでした。 http://www.ruby-lang.org/ja/news/2013/02/22/ruby-1-9-3-p392-is-released/
実装は詳しいところはわかりませんが、REXML::Document.entity_expansion_text_limit= というメソッドが追加されていてエンティティ展開で生成する文字列のサイズの上限(デフォルトは10240)を設定できるようにしてこれを越えたら打ち切って例外発生させるという感じです。ちなみに entity_expansion_text_limit の reader と writer のメソッドのコメントでデフォルト値が若干食い違ってますね。