ruby-trunk-changes r33619 - r33634

今日は OpenSSL::PKEY::RSA での鍵生成の不具合修正がありました。最近の trunk の rubyRSA 鍵を生成していた場合、鍵の作り直しが必要になりますのでご注意ください。リリース版にはこの不具合はありません。

nagachika:r33619 2011-11-03 22:14:48 +0900

拡張ライブラリ socket の rsock_socket() で SOCK_CLOEXEC が未定義だったり有効でなかった場合に close-on-exec フラグを立てないままになることがあったので、 rb_fd_fix_cloexec() の呼び出しを追加しています。

akr:r33620 2011-11-03 22:46:41 +0900

rsock_socketpair() から socketpair(2) の呼び出し部分を切り出して rb_fd_fix_cloexec() を呼ぶ処理を追加しています。

nobu:r33621 2011-11-03 22:50:55 +0900

コンパイラの警告除去のためのキャスト追加や変数の初期化追加などです。

usa:r33622 2011-11-04 00:19:24 +0900

Windows 版で locale のエンコーディングを nl_langinfo_codeset() を呼んで決めているのを cygwin 版以外ではやめています。 nl_langinfo_codeset() は missing/langinfo.c に実装があって、環境変数 LANG や LC_ALL などからエンコーディングを決定する関数のようです。

svn:r33623 2011-11-04 00:19:28 +0900

version.h の日付更新。

naruse:r33624 2011-11-04 00:54:16 +0900

test/psych/test_yamldbm.rb で Psych がロードされていなかったらテストクラスの定義自体をスキップするようにしています。

naruse:r33625 2011-11-04 00:54:19 +0900

拡張ライブラリ readline で HAVE_CLEAR_HISTORY (clear_history() という関数の有無)のフラグの利用する条件が反転しているのを修正。リンクしているのが libeditline の時に history_get() などの動作をチェックするために lhistory_add() したのを掃除するところがうまく働いていなかったらしい。

naruse:r33626 2011-11-04 01:23:58 +0900

拡張ライブラリ readline での replace_history_entry() という関数は libreadline と libedit で指定するインデックスが絶対値か history_base からのオフセットかが異なるので、その差異を吸収する関数ポインタの初期化をするようにしています。

usa:r33627 2011-11-04 01:59:53 +0900

IO の改行コード変換モードの出力時の扱いで ECONV_UNIVERSAL_NEWLINE_DECORATOR は考慮せず TEXTMODE_NEWLINE_DECORATOR_ON_WRITE というフラグの時の動作にするようにしています。これはドキュメントによると LF("\n") を CRLF("\r\n") に変換するモードで、 Windows 環境での Kernel.p や Kernel.puts の表示の不具合を修正するものだそうです。

usa:r33628 2011-11-04 03:45:41 +0900

r33627 で条件分岐のかっこの対応がおかしくなってたのを修正。

usa:r33629 2011-11-04 04:06:43 +0900

そして if 文の内容が複文になったので {} で囲みを追加。

usa:r33630 2011-11-04 04:55:43 +0900

Windows 7 でビルドできないという件の対応として、win32/configure.bat に @setlocal disabledelayexpansion というコマンドで変数の展開遅延を抑制しているそうです。正直チケットをみただけでよく調べていませんが batch file の "!" という文字を使った変数の遅延展開の機能がコマンドプロンプトから on/off できるようで、それに依存していたようです。

emboss:r33631 2011-11-04 08:45:23 +0900

拡張ライブラリ openssl のビルド時に ENGINE_load_dynamic, ENGINE_load_padlock, ENGINE_load_capi, ENGINE_load_gmp, ENGINE_load_gost, ENGINE_load_cryptodev, ENGINE_load_aesni といった関数の有無チェックを追加して、OpenSSL::Engine.load がサポートするエンジンを拡張しています。 [ruby-core:40670] [Bug #5548]

emboss:r33632 2011-11-04 09:33:11 +0900

OpenSSL::Engine のテストがほとんどなかったで基本的なテストを追加しています。

nahi:r33633 2011-11-04 14:12:31 +0900

OpenSSL::PKey::RSA の鍵生成で BN_set_bit() でのビットのセットが不十分で下位 4bit (sizeof(int) bit) しか利用されていなかったため不十分な鍵を生成するようになってしまっていたようです。
これは r33155 で鍵生成時の GVL 解放を入れたときのもので、1.9.3 や 1.9.2 のブランチには入っておらずリリース版には問題ありません。2011-09-01 以降の trunk 版で、CRuby の openssl を利用して RSA鍵生成をしていたら、その鍵は使いものにならないので作り直しが必要です。ご注意ください。

nobu:r33634 2011-11-04 16:19:23 +0900

あちこちの行末の空白削除。