diff options
author | Davi Arnaut <Davi.Arnaut@Sun.COM> | 2009-05-25 10:00:18 -0300 |
---|---|---|
committer | Davi Arnaut <Davi.Arnaut@Sun.COM> | 2009-05-25 10:00:18 -0300 |
commit | 7c4eb8c0d17fc68da2ab58ee3ace88ea38e48515 (patch) | |
tree | 313e142b0d73e2db6283108c35e6937edefa7fdb /mysql-test/t/openssl_1.test | |
parent | 73481404656a954b314398f26ee7b4e3aec14282 (diff) | |
download | mariadb-git-7c4eb8c0d17fc68da2ab58ee3ace88ea38e48515.tar.gz |
Bug#42158: leak: SSL_get_peer_certificate() doesn't have matching X509_free()
The problem is that the server failed to follow the rule that
every X509 object retrieved using SSL_get_peer_certificate()
must be explicitly freed by X509_free(). This caused a memory
leak for builds linked against OpenSSL where the X509 object
is reference counted -- improper counting will prevent the
object from being destroyed once the session containing the
peer certificate is freed.
The solution is to explicitly free every X509 object used.
mysql-test/r/openssl_1.result:
Add test case result for Bug#42158
mysql-test/t/openssl_1.test:
Add test case for Bug#42158
sql/sql_acl.cc:
Deallocate X509 objects.
Diffstat (limited to 'mysql-test/t/openssl_1.test')
-rw-r--r-- | mysql-test/t/openssl_1.test | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/mysql-test/t/openssl_1.test b/mysql-test/t/openssl_1.test index 240a977fdca..baa1603faab 100644 --- a/mysql-test/t/openssl_1.test +++ b/mysql-test/t/openssl_1.test @@ -238,7 +238,18 @@ DROP TABLE t1; --enable_query_log select 'is still running; no cipher request crashed the server' as result from dual; -## +# +# Bug#42158: leak: SSL_get_peer_certificate() doesn't have matching X509_free() +# + +GRANT SELECT ON test.* TO bug42158@localhost REQUIRE X509; +FLUSH PRIVILEGES; +connect(con1,localhost,bug42158,,,,,SSL); +SHOW STATUS LIKE 'Ssl_cipher'; +disconnect con1; +connection default; +DROP USER bug42158@localhost; + --echo End of 5.1 tests # Wait till we reached the initial number of concurrent sessions |