From bd210ff16425ab92aef0ca4ac5a28061fac7c154 Mon Sep 17 00:00:00 2001 From: nagachika Date: Wed, 18 Nov 2015 15:37:52 +0000 Subject: [PATCH] merge revision(s) 52556,52557: [Backport #10735] * ext/openssl/ossl_pkey.c: Merge ruby/openssl@b9ea8ef [Bug #10735] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@52651 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 4 ++++ ext/openssl/ossl_pkey.c | 5 ++++- version.h | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0ddb5db15b..6e82651ee3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Thu Nov 19 00:15:23 2015 Zachary Scott + + * ext/openssl/ossl_pkey.c: Merge ruby/openssl@b9ea8ef [Bug #10735] + Thu Nov 19 00:01:14 2015 Nobuyoshi Nakada * io.c (argf_next_argv): check ARGV element type, and try diff --git a/ext/openssl/ossl_pkey.c b/ext/openssl/ossl_pkey.c index aa9b046d38..ba9a019461 100644 --- a/ext/openssl/ossl_pkey.c +++ b/ext/openssl/ossl_pkey.c @@ -289,6 +289,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."); @@ -298,7 +299,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); diff --git a/version.h b/version.h index d716a7041c..bec24f7c67 100644 --- a/version.h +++ b/version.h @@ -1,6 +1,6 @@ #define RUBY_VERSION "2.2.4" #define RUBY_RELEASE_DATE "2015-11-19" -#define RUBY_PATCHLEVEL 189 +#define RUBY_PATCHLEVEL 190 #define RUBY_RELEASE_YEAR 2015 #define RUBY_RELEASE_MONTH 11