github / github/ssh_data

Fails to load in JRuby: RangeError (bignum too big to convert into `long')

オープン
#66 コメント 3 件 リアクション 1 件 担当者 0 名 GitHub で見る
主要言語
Ruby
スター
98
フォーク
54
PR マージ指標
30日以内にマージされた PR はありません

説明

This module expects in multiple locations that it can convert the special numbers 0 and 2^64-1 into a time stamp. This does not work in JRuby, where it uses a signed long to work on times.

```
irb(main):002:0> require "ssh_data"
Traceback (most recent call last):
16: from org/jruby/RubyKernel.java:1052:in `load'
15: from /usr/share/jruby/bin/irb:11:in `'
14: from org/jruby/RubyKernel.java:1237:in `catch'
13: from org/jruby/RubyKernel.java:1237:in `catch'
12: from org/jruby/RubyKernel.java:1507:in `loop'
11: from org/jruby/RubyKernel.java:1091:in `eval'
10: from (irb):2:in `evaluate'
9: from /usr/share/jruby/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:160:in `require'
8: from org/jruby/RubyKernel.java:1017:in `require'
7: from /var/lib/puppetserver/jruby-gems/gems/ssh_data-1.3.0/lib/ssh_data.rb:33:in `'
6: from /usr/share/jruby/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:85:in `require'
5: from org/jruby/RubyKernel.java:1017:in `require'
4: from /var/lib/puppetserver/jruby-gems/gems/ssh_data-1.3.0/lib/ssh_data/certificate.rb:4:in `'
3: from /var/lib/puppetserver/jruby-gems/gems/ssh_data-1.3.0/lib/ssh_data/certificate.rb:5:in `'
2: from /var/lib/puppetserver/jruby-gems/gems/ssh_data-1.3.0/lib/ssh_data/certificate.rb:8:in `'
1: from org/jruby/RubyTime.java:1336:in `at'
RangeError (bignum too big to convert into `long')
```

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

まず、JRuby で `require "ssh_data"` を使って失敗を再現し、次に `lib/ssh_data/certificate.rb` を調査してください。ここでは現在、読み込みが `Time.at` に到達します。また、`lib/ssh_data.rb` の関連する読み込みパスも調査してください。0 と 2^64-1 をタイムスタンプに変換する他の箇所を特定し、RangeError を発生させずに JRuby でライブラリが正常に読み込まれることを確認してください。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
ruby
領域
security
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。