diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | ext/openssl/ossl_pkey.c | 5 | ||||
-rw-r--r-- | version.h | 2 |
3 files changed, 9 insertions, 2 deletions
@@ -1,3 +1,7 @@ +Wed Nov 18 20:38:15 2015 Zachary Scott <zzak@ruby-lang.org> + + * ext/openssl/ossl_pkey.c: Merge ruby/openssl@b9ea8ef [Bug #10735] + Wed Nov 18 20:31:56 2015 Aaron Patterson <tenderlove@ruby-lang.org> * ext/openssl/ossl_ssl.c (ossl_ssl_method_tab): Only add SSLv3 support diff --git a/ext/openssl/ossl_pkey.c b/ext/openssl/ossl_pkey.c index 878b221270..70e6181281 100644 --- a/ext/openssl/ossl_pkey.c +++ b/ext/openssl/ossl_pkey.c @@ -275,6 +275,7 @@ ossl_pkey_sign(VALUE self, VALUE digest, VALUE data) EVP_MD_CTX ctx; unsigned int buf_len; VALUE str; + int result; if (rb_funcall(self, id_private_q, 0, NULL) != Qtrue) { ossl_raise(rb_eArgError, "Private key is needed."); @@ -284,7 +285,9 @@ ossl_pkey_sign(VALUE self, VALUE digest, VALUE data) StringValue(data); EVP_SignUpdate(&ctx, RSTRING_PTR(data), RSTRING_LEN(data)); str = rb_str_new(0, EVP_PKEY_size(pkey)+16); - if (!EVP_SignFinal(&ctx, (unsigned char *)RSTRING_PTR(str), &buf_len, pkey)) + result = EVP_SignFinal(&ctx, (unsigned char *)RSTRING_PTR(str), &buf_len, pkey); + EVP_MD_CTX_cleanup(&ctx); + if (!result) ossl_raise(ePKeyError, NULL); assert((long)buf_len <= RSTRING_LEN(str)); rb_str_set_len(str, buf_len); @@ -1,6 +1,6 @@ #define RUBY_VERSION "2.1.8" #define RUBY_RELEASE_DATE "2015-11-18" -#define RUBY_PATCHLEVEL 418 +#define RUBY_PATCHLEVEL 419 #define RUBY_RELEASE_YEAR 2015 #define RUBY_RELEASE_MONTH 11 |