ruby-changes:39102
From: normal <ko1@a...>
Date: Tue, 7 Jul 2015 16:46:50 +0900 (JST)
Subject: [ruby-changes:39102] normal:r51183 (trunk): random.c: fix failures on old Linux
normal 2015-07-07 16:46:29 +0900 (Tue, 07 Jul 2015) New Revision: 51183 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=51183 Log: random.c: fix failures on old Linux This follows the behavior of fill_random_bytes_urandom and fixes the following failures I encountered on my old machine: 1) Error: TestSecureRandom#test_s_random_bytes_without_openssl: NotImplementedError: No random device $RUBYDIR/lib/securerandom.rb:66:in `gen_random' $RUBYDIR/lib/securerandom.rb:94:in `random_bytes' $RUBYDIR/test/test_securerandom.rb:12:in `test_s_random_bytes' $RUBYDIR/test/test_securerandom.rb:97:in `block in test_s_random_bytes_without_openssl' $RUBYDIR/lib/tmpdir.rb:88:in `mktmpdir' $RUBYDIR/test/test_securerandom.rb:85:in `test_s_random_bytes_without_openssl' 2) Error: TestSecureRandom#test_s_urlsafe_base64: NotImplementedError: No random device $RUBYDIR/lib/securerandom.rb:66:in `gen_random' $RUBYDIR/lib/securerandom.rb:94:in `random_bytes' $RUBYDIR/lib/securerandom.rb:164:in `urlsafe_base64' $RUBYDIR/test/test_securerandom.rb:131:in `block in test_s_urlsafe_base64' $RUBYDIR/test/test_securerandom.rb:130:in `times' $RUBYDIR/test/test_securerandom.rb:130:in `test_s_urlsafe_base64' 3) Error: TestSecureRandom#test_uuid: NotImplementedError: No random device $RUBYDIR/lib/securerandom.rb:66:in `gen_random' $RUBYDIR/lib/securerandom.rb:94:in `random_bytes' $RUBYDIR/lib/securerandom.rb:230:in `uuid' $RUBYDIR/test/test_securerandom.rb:160:in `test_uuid' * random.c (fill_random_bytes_syscall): return -1 for error * random.c (fill_random_bytes): try urandom on syscall failure Modified files: trunk/ChangeLog trunk/random.c Index: ChangeLog =================================================================== --- ChangeLog (revision 51182) +++ ChangeLog (revision 51183) @@ -1,3 +1,8 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1 +Tue Jul 7 16:39:04 2015 Eric Wong <e@8...> + + * random.c (fill_random_bytes_syscall): return -1 for error + * random.c (fill_random_bytes): try urandom on syscall failure + Tue Jul 7 15:02:18 2015 Nobuyoshi Nakada <nobu@r...> * file.c (rb_str_normalize_ospath): skip invalid byte sequence not Index: random.c =================================================================== --- random.c (revision 51182) +++ random.c (revision 51183) @@ -529,7 +529,7 @@ fill_random_bytes_syscall(void *seed, si https://github.com/ruby/ruby/blob/trunk/random.c#L529 } if ((size_t)ret == size) return 0; } - return 0; + return -1; } #else # define fill_random_bytes_syscall(seed, size) -1 @@ -539,7 +539,7 @@ static int https://github.com/ruby/ruby/blob/trunk/random.c#L539 fill_random_bytes(void *seed, size_t size) { int ret = fill_random_bytes_syscall(seed, size); - if (ret) return ret; + if (ret == 0) return ret; return fill_random_bytes_urandom(seed, size); } -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/