summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog9
-rw-r--r--ext/openssl/lib/openssl.rb1
-rw-r--r--ext/openssl/lib/openssl/x509.rb10
-rw-r--r--ext/openssl/ossl_x509store.c12
-rw-r--r--test/openssl/test_x509store.rb8
5 files changed, 27 insertions, 13 deletions
diff --git a/ChangeLog b/ChangeLog
index c9bc6cf18e..bc734f5f04 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+Fri Dec 10 02:18:02 2010 Aaron Patterson <aaron@tenderlovemaking.com>
+
+ * ext/openssl/ossl_x509store.c (ossl_x509stctx_cleanup): removing C
+ implementation of `cleanup`.
+
+ * ext/openssl/lib/openssl/x509.rb: adding ruby implementation of
+ `cleanup`. OpenSSL::X509::StoreContext#cleanup is deprecated since
+ reusing the underlying struct doesn't make sense. [ruby-dev:42546]
+
Thu Dec 9 20:14:39 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
* parse.y (lvar_defined_gen, shadowing_lvar_gen, dvar_defined): no
diff --git a/ext/openssl/lib/openssl.rb b/ext/openssl/lib/openssl.rb
index 3cff8d9c10..fb215cdc56 100644
--- a/ext/openssl/lib/openssl.rb
+++ b/ext/openssl/lib/openssl.rb
@@ -20,6 +20,7 @@ require 'openssl/bn'
require 'openssl/cipher'
require 'openssl/config'
require 'openssl/digest'
+require 'openssl/x509'
require 'openssl/ssl-internal'
require 'openssl/x509-internal'
diff --git a/ext/openssl/lib/openssl/x509.rb b/ext/openssl/lib/openssl/x509.rb
index 3f17f5aa29..aae75a366e 100644
--- a/ext/openssl/lib/openssl/x509.rb
+++ b/ext/openssl/lib/openssl/x509.rb
@@ -1 +1,9 @@
-require 'openssl'
+module OpenSSL
+ module X509
+ class StoreContext
+ def cleanup
+ warn "(#{caller.first}) OpenSSL::X509::StoreContext#cleanup is deprecated with no replacement" if $VERBOSE
+ end
+ end
+ end
+end
diff --git a/ext/openssl/ossl_x509store.c b/ext/openssl/ossl_x509store.c
index 7b4a005110..317fc3534a 100644
--- a/ext/openssl/ossl_x509store.c
+++ b/ext/openssl/ossl_x509store.c
@@ -511,17 +511,6 @@ ossl_x509stctx_get_curr_crl(VALUE self)
}
static VALUE
-ossl_x509stctx_cleanup(VALUE self)
-{
- X509_STORE_CTX *ctx;
-
- GetX509StCtx(self, ctx);
- X509_STORE_CTX_cleanup(ctx);
-
- return self;
-}
-
-static VALUE
ossl_x509stctx_set_flags(VALUE self, VALUE flags)
{
X509_STORE_CTX *store;
@@ -615,7 +604,6 @@ Init_ossl_x509store()
rb_define_method(x509stctx,"error_depth", ossl_x509stctx_get_err_depth, 0);
rb_define_method(x509stctx,"current_cert",ossl_x509stctx_get_curr_cert, 0);
rb_define_method(x509stctx,"current_crl", ossl_x509stctx_get_curr_crl, 0);
- rb_define_method(x509stctx,"cleanup", ossl_x509stctx_cleanup, 0);
rb_define_method(x509stctx,"flags=", ossl_x509stctx_set_flags, 1);
rb_define_method(x509stctx,"purpose=", ossl_x509stctx_set_purpose, 1);
rb_define_method(x509stctx,"trust=", ossl_x509stctx_set_trust, 1);
diff --git a/test/openssl/test_x509store.rb b/test/openssl/test_x509store.rb
index 238ee90030..81fa0b0dcb 100644
--- a/test/openssl/test_x509store.rb
+++ b/test/openssl/test_x509store.rb
@@ -22,6 +22,14 @@ class OpenSSL::TestX509Store < Test::Unit::TestCase
def teardown
end
+ def test_nosegv_on_cleanup
+ cert = OpenSSL::X509::Certificate.new
+ store = OpenSSL::X509::Store.new
+ ctx = OpenSSL::X509::StoreContext.new(store, cert, [])
+ ctx.cleanup
+ ctx.verify
+ end
+
def issue_cert(*args)
OpenSSL::TestUtils.issue_cert(*args)
end