From be4f7bf51253b5a0519126fb742b8de514bad278 Mon Sep 17 00:00:00 2001 From: nahi Date: Tue, 20 Dec 2011 06:06:46 +0000 Subject: * Make sure to clear $! when ignoring an exception * ext/openssl/ossl.c (ossl_pem_passwd_cb0, ossl_verify_cb): pem_passwd_cb and verify_cb ignores the exception raised in a callback proc so it should clear $! for subsequent execution. That's said, both subsequent processes for pem_passwd_cb and verify_cb raises another exception before leaking $! to Ruby world. We cannot test this fix in Ruby land. * test/openssl/test_pkey_rsa.rb (test_read_private_key_pem_pw_exception): Test for pem_passwd_cb + exception. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34078 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/openssl/test_pkey_rsa.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'test/openssl') diff --git a/test/openssl/test_pkey_rsa.rb b/test/openssl/test_pkey_rsa.rb index b7da0ca427..815f49b61e 100644 --- a/test/openssl/test_pkey_rsa.rb +++ b/test/openssl/test_pkey_rsa.rb @@ -233,6 +233,17 @@ AwEAAQ== assert_equal([], OpenSSL.errors) end + def test_read_private_key_pem_pw_exception + pem = OpenSSL::TestUtils::TEST_KEY_RSA1024.to_pem(OpenSSL::Cipher.new('AES-128-CBC'), 'secret') + # it raises an ArgumentError from PEM reading. The exception raised inside are ignored for now. + assert_raise(ArgumentError) do + OpenSSL::PKey.read(pem) do + raise RuntimeError + end + end + assert_equal([], OpenSSL.errors) + end + private def check_PUBKEY(asn1, key) -- cgit v1.2.3