ruby-trunk-changes r39073 - r39117

今日は RDoc が生成する HTML ドキュメントに含まれる JavaScriptXSS 脆弱性の修正がありました。RDoc を更新するのみならずドキュメントの再生成が必要となっています。詳細は→ http://www.ruby-lang.org/ja/news/2013/02/06/rdoc-xss-cve-2013-0256/
この脆弱性対策に伴い ruby-1.9.3 patchlevel 385 がリリースされています。

また TracePoint#binding の不具合修正と CSV.load,dump の削除、multi architecture インストールの対応などがありました。 RC2 のリリースもう少し伸びるのかな。

ktsj:r39073 2013-02-06 00:55:41 +0900

r39067 と同様に callcc のブロックで TracePoint#binding で Binding オブジェクトを取得しようとすると SEGV する不具合を修正するため rb_vm_stack_to_heap() でも IFUNC フレームをスキップしないようにしています。 [ruby-dev:46908] [Bug #7774]

svn:r39074 2013-02-06 00:55:47 +0900

version.h の日付更新。

zzak:r39075 2013-02-06 00:57:19 +0900

irb の rdoc で演算子のシンボル :+ などが行末にあった時に行が継続するとみなされてしまうという制限事項が記述されているのですが、実際にはもうこの制限はなくなっているので削除しています。

zzak:r39076 2013-02-06 01:50:54 +0900

r39075 の ChangeLog エントリにパッチ提供者の名前を追記しています。

jeg2:r39077 2013-02-06 03:28:26 +0900

昨日 doc/security.rdoc で指摘されていた CSV のオブジェクト serialize/deserialize 機能 CSV.dump, CSV.load を標準ライブラリ csv.rb から削除しています。うーんこのタイミングで消しちゃいますか。 少なくとも NEWS には追記しておいたほうがいいですね。
あとなぜか ChangeLog の URL 部分のインデントがなくなってしまっています。

zzak:r39078 2013-02-06 03:44:46 +0900

CSV.dump/load の削除に伴い doc/security.rdoc の CSV の項目も削除しています。

zzak:r39079 2013-02-06 05:52:28 +0900

doc/rubygems/ の古いドキュメントを削除しています。 また lib/rubygems/LICENSE.txt にライセンスファイルを追加(doc/rubygems/ から移動?)し、また lib/rubygems.rb などで rdoc のドキュメントが正しく生成されるように require の位置をコメントと module Gem の間からコメントの前に移動しています。

zzak:r39080 2013-02-06 05:58:01 +0900

lib/racc/parser.rb の copyright 表示を rdoc のドキュメンテーション対象から外すようにしています。

zzak:r39081 2013-02-06 06:06:14 +0900

r39079 の rubygems の rdoc コメントの修正でコメント行が途切れてたのを修正しています。これ rdoc の生成するドキュメントに影響するんでしょうか。 行コメントはかたまりになってないとだめ(空行がはさまるとだめ)なんでしょうか。

nobu:r39082 2013-02-06 09:30:19 +0900

test/rdoc/test_rdoc_servlet.rb の行末の空白削除。

nobu:r39083 2013-02-06 09:33:15 +0900

r39077 でおかしくなった ChangeLog のインデントを修正しています。

nobu:r39084 2013-02-06 09:33:28 +0900

r39079 で新規追加されたファイルの svn property 設定。

nobu:r39085 2013-02-06 11:17:23 +0900

Windows 版で ruby のパスを UNC パス(ネットワーク共有時のパス)で指定した時のテストをローカルドライブが共有されていない時には失敗するので skip するようにしています。

marcandre:r39086 2013-02-06 12:39:59 +0900

README に ruby の入手方法についてのページへの誘導や質問やバグ報告の先について追記しています。 README で stackoverflow に誘導される時代なんですねぇ。 README.ja には QA@IT でも書いておきますか。

zzak:r39087 2013-02-06 12:49:59 +0900

r39077 での CSV.load, CSV.dump の削除を NEWS ファイルに追記しています。 おおもう追記してくれてました。 zzak++

zzak:r39088 2013-02-06 13:03:39 +0900

doc/security.rdoc に ruby脆弱性報告リスト(CVE)のサイトへのリンクを追加しています。 http://www.ruby-lang.org/en/security/ 日本語版もありました。 http://www.ruby-lang.org/ja/security/

nobu:r39089 2013-02-06 13:35:23 +0900

メソッドの定義位置を取得する C の API rb_method_entry_location() および rb_mod_method_location()、rb_obj_method_location() を追加して、r39069 でインタプリタ内部から再定義された respond_to? を呼び出す時に arity が 1 だった時に出力する警告にそのメソッド定義のファイルパスや行数も表示するようにしています。

marcandre:r39095 2013-02-06 14:25:40 +0900

r39086 での README の変更時の typo 修正。

kosaki:r39097 2013-02-06 15:37:18 +0900

OpenBSD で Process.setsid のテストが失敗するので skip するようにしています。 [ruby-core:51889] [Bug #7789]

kosaki:r39098 2013-02-06 15:37:28 +0900

同じく Process.setsid のテストで作成した子プロセスへのシグナル送信と Process.wait の呼び出しを ensure 節にして確実に子プロセスを止めて、終了を待つようにしています。

nobu:r39100 2013-02-06 16:47:45 +0900

tool/mkconfig.rb で config.status の内容を parse しているところで sitearch にマッチさせる正規表現に行末の指定がなかったのを補って全文マッチするようにしています。

drbrain:r39102 2013-02-06 17:05:44 +0900

RDoc を 4.0.0.preview3.1 から 4.0.0.rc.2 にアップデートしています。この更新では RDoc が生成するドキュメントに含まれる darkfish.js という JavaScript ライブラリの XSS 脆弱性の修正が含まれています。このためこれ以前の RDoc で生成したドキュメントに脆弱性があり、ドキュメントの再生成が必要となるようです。詳細はこちらに http://www.ruby-lang.org/ja/news/2013/02/06/rdoc-xss-cve-2013-0256/
またこの脆弱性対策に伴い ruby-1.9.3 patchlevel 385 がリリースされています。

nobu:r39104 2013-02-06 17:32:38 +0900

configure.in に shvar_to_cpp というシェル関数を定義して変数の定義を各所で eval など駆使して書いていたのをリファクタリングしているようです。 shvar_to_cpp() の内容はよくみてないですけど。

nobu:r39105 2013-02-06 17:32:43 +0900

shvar_to_cpp() で ${arch}, ${sitearch} の置換する変数名を変更しています。また RUBY_ARCH_LIB_FOR()、RUBY_SITE_ARCH_LIB_FOR()、RUBY_VENDOR_ARCH_LIB_FOR() などのマクロを定義して、それを使って version.h の標準のライブラリロードパスの定数マクロを定義するようにしています。

nobu:r39106 2013-02-06 17:32:48 +0900

configure で RUBY_VERSION_NAME という定数を定義して ruby.pc にも出力するようにしています。

nobu:r39107 2013-02-06 17:32:53 +0900

アーキテクチャ依存のライブラリロードパスを configure オプション --with-rubyarchprefix, --with-sitearchdir, --with-vendorarchdir などで指定できるようにしています。 ここまでこの変更のための準備だったんですね、多分。

nobu:r39108 2013-02-06 17:32:58 +0900

さらにアーキテクチャ毎のヘッダファイルのインストール先ディレクトリの指定を configure のオプション --with-rubyarchhdrdir, --with-sitearchhdrdir, --with-vendorarchhdrdir で変更できるようにしています。

nobu:r39109 2013-02-06 17:33:03 +0900

configure に --enable-multiarch オプションを追加してロードパスなどをアーキテクチャ毎のサブディレクトリに分けるようにできるようにしています。 このチケット next minor になっていますけど RC2 リリース前に入れちゃって大丈夫でしょうか。 [ruby-core:43066] [Feature #6111]

charliesome:r39116 2013-02-06 22:46:26 +0900

Hash#reject! と Hash#select! で内部的に生成した keys の配列の klass = 0 にセットして ObjectSpace.each_object から見えないようにしています。

zzak:r39117 2013-02-06 23:31:32 +0900

doc/pty/README.expect という拡張ライブラリ pty の IO#expect についてのドキュメントのファイルは削除して、ext/pty/lib/expect.rb に rdoc 用コメントとして追記しています。