OpenSSL::Random.random_bytes(Object.new)

e$B0J2<$N$h$&$K!"e(B OpenSSL::Random.random_bytes(Object.new) e$B$Ge(B
negative string size (or size too big) (ArgumentError)
e$B$H$$$&Nc30$K$J$k$N$OJQ$J$N$G$O$J$$$G$7$g$&$+!#e(B

% ./ruby -ropenssl -ve ‘p OpenSSL::Random.random_bytes(Object.new)’
ruby 1.8.7 (2008-05-28 patchlevel 5000) [i686-linux]
-e:1:in `random_bytes’: negative string size (or size too big)
(ArgumentError)
from -e:1

At Fri, 30 May 2008 01:55:43 +0900,
Tanaka A. wrote:

以下のように、 OpenSSL::Random.random_bytes(Object.new) で
negative string size (or size too big) (ArgumentError)
という例外になるのは変なのではないでしょうか。

% ./ruby -ropenssl -ve ‘p OpenSSL::Random.random_bytes(Object.new)’
ruby 1.8.7 (2008-05-28 patchlevel 5000) [i686-linux]
-e:1:in `random_bytes’: negative string size (or size too big) (ArgumentError)
from -e:1

 FIXNUM_P()でチェックせずにFIX2INT()しているのが問題でした。
ほかにもいくつかあったので併せて直しました。