github / github/ssh_data

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

未關閉
#66 3 則留言 1 個 reaction 已指派 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 轉換為時間戳的其他位置,並驗證該函式庫能在 JRuby 下成功載入且不會出現 RangeError。

由索引模型根據 Issue 內容生成。

評估

技術堆疊
ruby
領域
security
Issue 類型
缺陷
難度
3/5
預估耗時
1-2 天
活躍度
停滯
描述清晰度
基本清楚
新手友好度
35/100

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。