MacPortsのport:ruby19を1.9.3-p327に(セキュリティ修正あり)
リリースされてたので更新しました。CVE-2012-5371 "ハッシュ飽和攻撃によってサービスを停止させることができる脆弱性"の修正が含まれています。詳細はリリースアナウンスを見てください。
test_interrupt(TestBignum) で1F
いちおう毎回make test-allの結果を確認してるんだけど、今回は見たことないエラーがでた。
% make TESTS="-j1 ruby/test_bignum.rb" test-all ./miniruby -I./lib -I. -I.ext/common ./tool/runruby.rb --extout=.ext -- --disa ble-gems "./test/runner.rb" --ruby="./miniruby -I./lib -I. -I.ext/common ./tool /runruby.rb --extout=.ext -- --disable-gems" -j1 ruby/test_bignum.rb Run options: "--ruby=./miniruby -I./lib -I. -I.ext/common ./tool/runruby.rb --e xtout=.ext -- --disable-gems" -j1 : Finished tests in 2.133764s, 21.0895 tests/s, 154.6563 assertions/s. 1) Failure: test_interrupt(TestBignum) [/.../ruby-1.9.3-p327/test/ruby/test_bignum.rb:510]: Failed assertion, no message given.
該当のテストのコードは、
def interrupt time = Time.now start_flag = false end_flag = false thread = Thread.new do start_flag = true yield end_flag = true end sleep 1 thread.raise thread.join rescue nil start_flag && !end_flag && Time.now - time < 10 end def test_interrupt assert(interrupt { (65536 ** 65536).to_s }) end
なんだけど、65536 ** 65536って数字に特別な意味があるんじゃなければ、この処理が見込みよりも時間かからなくなって抜けちゃってるんだと思う。数字増やしたらテスト通るようになったし。
これはどうしたらよいかねえ、、