diff options
author | nagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-08-29 20:36:38 +0000 |
---|---|---|
committer | nagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-08-29 20:36:38 +0000 |
commit | 18f287a36de45edcd39541015b445ee0b954e7b1 (patch) | |
tree | d6afc15c97d97b7e5025d51a391d35d19b4162ef | |
parent | 53369d7e4dab675ede11b584ffc003e51ea62672 (diff) |
backport additional fix memory leak from openssl upstream.
https://github.com/ruby/openssl/commit/e76f076f093efb93dabf2cb042c527500f956061
patches are provided by rhe (Kazuki Yamaguchi).
* ext/openssl/ossl_x509ext.c: additional fix memory leak.
[ruby-core:76922] [Bug #12680]
* text/openssl/test_x509ext.rb: test for above.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@56032 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | ext/openssl/ossl_x509ext.c | 2 | ||||
-rw-r--r-- | test/openssl/test_x509ext.rb | 24 | ||||
-rw-r--r-- | version.h | 6 |
4 files changed, 27 insertions, 12 deletions
@@ -1,3 +1,10 @@ +Tue Aug 30 05:24:33 2016 Kazuki Yamaguchi <k@rhe.jp> + + * ext/openssl/ossl_x509ext.c: additional fix memory leak. + [ruby-core:76922] [Bug #12680] + + * text/openssl/test_x509ext.rb: test for above. + Sun Aug 28 00:26:58 2016 CHIKANAGA Tomoyuki <nagachika@ruby-lang.org> * vm_method.c: revert r55869. it breaks Integer#days with diff --git a/ext/openssl/ossl_x509ext.c b/ext/openssl/ossl_x509ext.c index 926811ca14..f1058a0c1f 100644 --- a/ext/openssl/ossl_x509ext.c +++ b/ext/openssl/ossl_x509ext.c @@ -247,7 +247,9 @@ ossl_x509extfactory_create_ext(int argc, VALUE *argv, VALUE self) #ifdef HAVE_X509V3_EXT_NCONF_NID rconf = rb_iv_get(self, "@config"); conf = NIL_P(rconf) ? NULL : DupConfigPtr(rconf); + X509V3_set_nconf(ctx, conf); ext = X509V3_EXT_nconf_nid(conf, ctx, nid, RSTRING_PTR(valstr)); + X509V3_set_ctx_nodb(ctx); NCONF_free(conf); #else if (!empty_lhash) empty_lhash = lh_new(NULL, NULL); diff --git a/test/openssl/test_x509ext.rb b/test/openssl/test_x509ext.rb index e6d49bb679..f2cce5cf4c 100644 --- a/test/openssl/test_x509ext.rb +++ b/test/openssl/test_x509ext.rb @@ -39,15 +39,15 @@ class OpenSSL::TestX509Extension < Test::Unit::TestCase bc = ef.create_extension("basicConstraints", "CA:TRUE, pathlen:2", true) assert_equal(@basic_constraints.to_der, bc.to_der) - begin - ef.config = OpenSSL::Config.parse(<<-_end_of_cnf_) - [crlDistPts] - URI.1 = http://www.example.com/crl - URI.2 = ldap://ldap.example.com/cn=ca?certificateRevocationList;binary - _end_of_cnf_ - rescue NotImplementedError - return - end + ef.config = OpenSSL::Config.parse(<<-_end_of_cnf_) + [crlDistPts] + URI.1 = http://www.example.com/crl + URI.2 = ldap://ldap.example.com/cn=ca?certificateRevocationList;binary + + [certPolicies] + policyIdentifier = 2.23.140.1.2.1 + CPS.1 = http://cps.example.com + _end_of_cnf_ cdp = ef.create_extension("crlDistributionPoints", "@crlDistPts") assert_equal(false, cdp.critical?) @@ -64,6 +64,12 @@ class OpenSSL::TestX509Extension < Test::Unit::TestCase assert_match( %r{URI:ldap://ldap.example.com/cn=ca\?certificateRevocationList;binary}, cdp.value) + + cp = ef.create_extension("certificatePolicies", "@certPolicies") + assert_equal(false, cp.critical?) + assert_equal("certificatePolicies", cp.oid) + assert_match(%r{2.23.140.1.2.1}, cp.value) + assert_match(%r{http://cps.example.com}, cp.value) end end @@ -1,10 +1,10 @@ #define RUBY_VERSION "2.3.2" -#define RUBY_RELEASE_DATE "2016-08-28" -#define RUBY_PATCHLEVEL 181 +#define RUBY_RELEASE_DATE "2016-08-30" +#define RUBY_PATCHLEVEL 182 #define RUBY_RELEASE_YEAR 2016 #define RUBY_RELEASE_MONTH 8 -#define RUBY_RELEASE_DAY 28 +#define RUBY_RELEASE_DAY 30 #include "ruby/version.h" |