You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by am...@apache.org on 2016/11/01 14:25:33 UTC
[trafficserver] branch master updated: TS-4978: illegal memory
access with ticket_key.filename
This is an automated email from the ASF dual-hosted git repository.
amc pushed a commit to branch master
in repository https://git-dual.apache.org/repos/asf/trafficserver.git
The following commit(s) were added to refs/heads/master by this push:
new fc16e79 TS-4978: illegal memory access with ticket_key.filename
fc16e79 is described below
commit fc16e79f391fce7c1959a9f6da93c85a24ff8c66
Author: Persia Aziz <pe...@yahoo-inc.com>
AuthorDate: Tue Oct 18 14:53:59 2016 -0500
TS-4978: illegal memory access with ticket_key.filename
---
iocore/net/P_SSLConfig.h | 1 +
iocore/net/SSLCertLookup.cc | 12 +++++-----
iocore/net/SSLConfig.cc | 57 +++++++++++++++++++--------------------------
3 files changed, 31 insertions(+), 39 deletions(-)
diff --git a/iocore/net/P_SSLConfig.h b/iocore/net/P_SSLConfig.h
index 6adc2b5..621f570 100644
--- a/iocore/net/P_SSLConfig.h
+++ b/iocore/net/P_SSLConfig.h
@@ -115,6 +115,7 @@ struct SSLConfigParams : public ConfigInfo {
void initialize();
void cleanup();
+ void reset();
};
/////////////////////////////////////////////////////////////
diff --git a/iocore/net/SSLCertLookup.cc b/iocore/net/SSLCertLookup.cc
index b6547cd..1e4fb09 100644
--- a/iocore/net/SSLCertLookup.cc
+++ b/iocore/net/SSLCertLookup.cc
@@ -171,7 +171,7 @@ ticket_block_alloc(unsigned count)
ssl_ticket_key_block *
ticket_block_create(char *ticket_key_data, int ticket_key_len)
{
- ssl_ticket_key_block *keyblock = NULL;
+ ssl_ticket_key_block *keyblock = nullptr;
unsigned num_ticket_keys = ticket_key_len / sizeof(ssl_ticket_key_t);
if (num_ticket_keys == 0) {
Error("SSL session ticket key is too short (>= 48 bytes are required)");
@@ -195,7 +195,7 @@ ticket_block_create(char *ticket_key_data, int ticket_key_len)
fail:
ticket_block_free(keyblock);
- return NULL;
+ return nullptr;
}
ssl_ticket_key_block *
@@ -204,9 +204,9 @@ ssl_create_ticket_keyblock(const char *ticket_key_path)
#if HAVE_OPENSSL_SESSION_TICKETS
ats_scoped_str ticket_key_data;
int ticket_key_len;
- ssl_ticket_key_block *keyblock = NULL;
+ ssl_ticket_key_block *keyblock = nullptr;
- if (ticket_key_path != NULL) {
+ if (ticket_key_path != nullptr) {
ticket_key_data = readIntoBuffer(ticket_key_path, __func__, &ticket_key_len);
if (!ticket_key_data) {
Error("failed to read SSL session ticket key from %s", (const char *)ticket_key_path);
@@ -224,11 +224,11 @@ ssl_create_ticket_keyblock(const char *ticket_key_path)
fail:
ticket_block_free(keyblock);
- return NULL;
+ return nullptr;
#else /* !HAVE_OPENSSL_SESSION_TICKETS */
(void)ticket_key_path;
- return NULL;
+ return nullptr;
#endif /* HAVE_OPENSSL_SESSION_TICKETS */
}
void
diff --git a/iocore/net/SSLConfig.cc b/iocore/net/SSLConfig.cc
index 898fdbb..bada78d 100644
--- a/iocore/net/SSLConfig.cc
+++ b/iocore/net/SSLConfig.cc
@@ -73,30 +73,27 @@ static ConfigUpdateHandler<SSLCertificateConfig> *sslCertUpdate;
SSLConfigParams::SSLConfigParams()
{
- serverCertPathOnly = nullptr;
- serverCertChainFilename = nullptr;
- configFilePath = nullptr;
- serverCACertFilename = nullptr;
- serverCACertPath = nullptr;
- clientCertPath = nullptr;
-
- clientKeyPath = nullptr;
- clientCACertFilename = nullptr;
- clientCACertPath = nullptr;
- cipherSuite = nullptr;
- client_cipherSuite = nullptr;
- dhparamsFile = nullptr;
- serverKeyPathOnly = nullptr;
-
- ticket_key_filename = nullptr;
- default_global_keyblock = nullptr;
+ reset();
+}
- clientCertLevel = client_verify_depth = verify_depth = clientVerify = 0;
+SSLConfigParams::~SSLConfigParams()
+{
+ cleanup();
+}
+
+void
+SSLConfigParams::reset()
+{
+ serverCertPathOnly = serverCertChainFilename = configFilePath = serverCACertFilename = serverCACertPath = clientCertPath =
+ clientKeyPath = clientCACertFilename = clientCACertPath = cipherSuite = client_cipherSuite = dhparamsFile = serverKeyPathOnly =
+ ticket_key_filename = nullptr;
+ default_global_keyblock = nullptr;
- ssl_ctx_options = SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3;
- ssl_client_ctx_protocols = SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3;
- ssl_session_cache = SSL_SESSION_CACHE_MODE_SERVER_ATS_IMPL;
- ssl_session_cache_size = 1024 * 100;
+ clientCertLevel = client_verify_depth = verify_depth = clientVerify = 0;
+ ssl_ctx_options = SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3;
+ ssl_client_ctx_protocols = SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3;
+ ssl_session_cache = SSL_SESSION_CACHE_MODE_SERVER_ATS_IMPL;
+ ssl_session_cache_size = 1024 * 100;
ssl_session_cache_num_buckets = 1024; // Sessions per bucket is ceil(ssl_session_cache_size / ssl_session_cache_num_buckets)
ssl_session_cache_skip_on_contention = 0;
ssl_session_cache_timeout = 0;
@@ -104,11 +101,6 @@ SSLConfigParams::SSLConfigParams()
configExitOnLoadError = 0;
}
-SSLConfigParams::~SSLConfigParams()
-{
- cleanup();
-}
-
void
SSLConfigParams::cleanup()
{
@@ -128,9 +120,7 @@ SSLConfigParams::cleanup()
ssl_wire_trace_ip = (IpAddr *)ats_free_null(ssl_wire_trace_ip);
ticket_key_filename = (char *)ats_free_null(ticket_key_filename);
ticket_block_free(default_global_keyblock);
- default_global_keyblock = NULL;
-
- clientCertLevel = client_verify_depth = verify_depth = clientVerify = 0;
+ reset();
}
/** set_paths_helper
@@ -268,12 +258,13 @@ SSLConfigParams::initialize()
ats_free(CACertRelativePath);
#if HAVE_OPENSSL_SESSION_TICKETS
- REC_ReadConfigStringAlloc(ticket_key_filename, "proxy.config.ssl.server.ticket_key.filename");
- if (this->ticket_key_filename != NULL) {
+
+ if (REC_ReadConfigStringAlloc(ticket_key_filename, "proxy.config.ssl.server.ticket_key.filename") == REC_ERR_OKAY &&
+ this->ticket_key_filename != nullptr) {
ats_scoped_str ticket_key_path(Layout::relative_to(this->serverCertPathOnly, this->ticket_key_filename));
default_global_keyblock = ssl_create_ticket_keyblock(ticket_key_path);
} else {
- default_global_keyblock = ssl_create_ticket_keyblock(NULL);
+ default_global_keyblock = ssl_create_ticket_keyblock(nullptr);
}
#endif
--
To stop receiving notification emails like this one, please contact
['"commits@trafficserver.apache.org" <co...@trafficserver.apache.org>'].