mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
openssl: fix incorrect return value check of RAND_* functions
* ext/openssl/ossl_rand.c (ossl_rand_egd, ossl_rand_egd_bytes): RAND_egd{_bytes,}() return -1 on failure, not 0. Patch by cremno phobia <cremno@mail.ru> [ruby-core:63795] [Bug #10053] (ossl_pseudo_bytes): Similar, RAND_pseudo_bytes() may return 0 or -1 on failure. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55132 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
2d9d6caabd
commit
9f0cf20fbd
2 changed files with 14 additions and 7 deletions
|
@ -1,3 +1,12 @@
|
|||
Mon May 23 19:41:27 2016 Kazuki Yamaguchi <k@rhe.jp>
|
||||
|
||||
* ext/openssl/ossl_rand.c (ossl_rand_egd, ossl_rand_egd_bytes):
|
||||
RAND_egd{_bytes,}() return -1 on failure, not 0.
|
||||
Patch by cremno phobia <cremno@mail.ru>
|
||||
[ruby-core:63795] [Bug #10053]
|
||||
(ossl_pseudo_bytes): Similar, RAND_pseudo_bytes() may return 0 or
|
||||
-1 on failure.
|
||||
|
||||
Mon May 23 15:52:07 2016 NAKAMURA Usaku <usa@ruby-lang.org>
|
||||
|
||||
* ext/bigdecimal/bigdecimal.c (isfinite): isfinite does not always
|
||||
|
|
|
@ -114,10 +114,8 @@ ossl_rand_bytes(VALUE self, VALUE len)
|
|||
|
||||
str = rb_str_new(0, n);
|
||||
ret = RAND_bytes((unsigned char *)RSTRING_PTR(str), n);
|
||||
if (ret == 0){
|
||||
char buf[256];
|
||||
ERR_error_string_n(ERR_get_error(), buf, 256);
|
||||
ossl_raise(eRandomError, "RAND_bytes error: %s", buf);
|
||||
if (ret == 0) {
|
||||
ossl_raise(eRandomError, "RAND_bytes");
|
||||
} else if (ret == -1) {
|
||||
ossl_raise(eRandomError, "RAND_bytes is not supported");
|
||||
}
|
||||
|
@ -146,7 +144,7 @@ ossl_rand_pseudo_bytes(VALUE self, VALUE len)
|
|||
int n = NUM2INT(len);
|
||||
|
||||
str = rb_str_new(0, n);
|
||||
if (!RAND_pseudo_bytes((unsigned char *)RSTRING_PTR(str), n)) {
|
||||
if (RAND_pseudo_bytes((unsigned char *)RSTRING_PTR(str), n) < 1) {
|
||||
ossl_raise(eRandomError, NULL);
|
||||
}
|
||||
|
||||
|
@ -165,7 +163,7 @@ ossl_rand_egd(VALUE self, VALUE filename)
|
|||
{
|
||||
SafeStringValue(filename);
|
||||
|
||||
if(!RAND_egd(RSTRING_PTR(filename))) {
|
||||
if (RAND_egd(RSTRING_PTR(filename)) == -1) {
|
||||
ossl_raise(eRandomError, NULL);
|
||||
}
|
||||
return Qtrue;
|
||||
|
@ -187,7 +185,7 @@ ossl_rand_egd_bytes(VALUE self, VALUE filename, VALUE len)
|
|||
|
||||
SafeStringValue(filename);
|
||||
|
||||
if (!RAND_egd_bytes(RSTRING_PTR(filename), n)) {
|
||||
if (RAND_egd_bytes(RSTRING_PTR(filename), n) == -1) {
|
||||
ossl_raise(eRandomError, NULL);
|
||||
}
|
||||
return Qtrue;
|
||||
|
|
Loading…
Add table
Reference in a new issue