diff options
author | nahi <nahi@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-12-20 06:06:46 +0000 |
---|---|---|
committer | nahi <nahi@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-12-20 06:06:46 +0000 |
commit | be4f7bf51253b5a0519126fb742b8de514bad278 (patch) | |
tree | c44d9f82e72e3b37003adc8c13b0a7c53fa75258 /test/openssl/test_pkey_rsa.rb | |
parent | 0ead5c4983edcdef071eb4317b904d9d0419b388 (diff) | |
download | ruby-be4f7bf51253b5a0519126fb742b8de514bad278.tar.gz |
* 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
Diffstat (limited to 'test/openssl/test_pkey_rsa.rb')
-rw-r--r-- | test/openssl/test_pkey_rsa.rb | 11 |
1 files changed, 11 insertions, 0 deletions
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) |