Actions
Bug #3816
closedOpenSSL::BN#prime?の引数の取り扱いがおかしい
Description
=begin
OpenSSL::BN#prime?を引数なしで呼ぶと以下の通り例外が出ます。
irb(main):001:0> require'openssl'=> trueirb(main):002:0> OpenSSL::BN.new("461166461445805738999").prime?
TypeError: no implicit conversion from nil to integer
from (irb):2:in prime?' from (irb):2 from /home/naruse/local/ruby_1_9_2/bin/irb:12:in
'
コードを見るに、rb_scan_args の引数との比較が誤っているように見えるので、引数ありでもおかしいでしょう。
以下の変更で直ります。
diff --git a/ext/openssl/ossl_bn.c b/ext/openssl/ossl_bn.c
index bec5135..6adc59f 100644
--- a/ext/openssl/ossl_bn.c
+++ b/ext/openssl/ossl_bn.c
@@ -669,7 +669,7 @@ ossl_bn_is_prime(int argc, VALUE *argv, VALUE self)
VALUE vchecks;
int checks = BN_prime_checks;
- if (rb_scan_args(argc, argv, "01", &vchecks) == 0) {
- if (rb_scan_args(argc, argv, "01", &vchecks) == 1) {
checks = NUM2INT(vchecks);
}
GetBN(self, bn);
=end
Actions
Like0
Like0