summaryrefslogtreecommitdiff
path: root/sql/sql_show.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/sql_show.cc')
-rw-r--r--sql/sql_show.cc73
1 files changed, 49 insertions, 24 deletions
diff --git a/sql/sql_show.cc b/sql/sql_show.cc
index 16790ac1621..821ec3fe972 100644
--- a/sql/sql_show.cc
+++ b/sql/sql_show.cc
@@ -1180,65 +1180,85 @@ int mysqld_show(THD *thd, const char *wild, show_var_st *variables)
/* First group - functions relying on CTX */
case SHOW_SSL_CTX_SESS_ACCEPT:
net_store_data(&packet2,(uint32)
- SSL_CTX_sess_accept(ssl_acceptor_fd->ssl_context_));
+ (!ssl_acceptor_fd ? 0 :
+ SSL_CTX_sess_accept(ssl_acceptor_fd->ssl_context_)));
break;
case SHOW_SSL_CTX_SESS_ACCEPT_GOOD:
net_store_data(&packet2,(uint32)
- SSL_CTX_sess_accept_good(ssl_acceptor_fd->ssl_context_));
+ (!ssl_acceptor_fd ? 0 :
+ SSL_CTX_sess_accept_good(ssl_acceptor_fd->ssl_context_)));
break;
case SHOW_SSL_CTX_SESS_CONNECT_GOOD:
net_store_data(&packet2,(uint32)
- SSL_CTX_sess_connect_good(ssl_acceptor_fd->ssl_context_));
+ (!ssl_acceptor_fd ? 0 :
+ SSL_CTX_sess_connect_good(ssl_acceptor_fd->ssl_context_)));
break;
case SHOW_SSL_CTX_SESS_ACCEPT_RENEGOTIATE:
net_store_data(&packet2,(uint32)
- SSL_CTX_sess_accept_renegotiate(ssl_acceptor_fd->ssl_context_));
+ (!ssl_acceptor_fd ? 0 :
+ SSL_CTX_sess_accept_renegotiate(ssl_acceptor_fd->ssl_context_)));
break;
case SHOW_SSL_CTX_SESS_CONNECT_RENEGOTIATE:
net_store_data(&packet2,(uint32)
- SSL_CTX_sess_connect_renegotiate(ssl_acceptor_fd->ssl_context_));
+ (!ssl_acceptor_fd ? 0 :
+ SSL_CTX_sess_connect_renegotiate(ssl_acceptor_fd->ssl_context_)));
break;
case SHOW_SSL_CTX_SESS_CB_HITS:
net_store_data(&packet2,(uint32)
- SSL_CTX_sess_cb_hits(ssl_acceptor_fd->ssl_context_));
+ (!ssl_acceptor_fd ? 0 :
+ SSL_CTX_sess_cb_hits(ssl_acceptor_fd->ssl_context_)));
break;
case SHOW_SSL_CTX_SESS_HITS:
net_store_data(&packet2,(uint32)
- SSL_CTX_sess_hits(ssl_acceptor_fd->ssl_context_));
+ (!ssl_acceptor_fd ? 0 :
+ SSL_CTX_sess_hits(ssl_acceptor_fd->ssl_context_)));
break;
case SHOW_SSL_CTX_SESS_CACHE_FULL:
net_store_data(&packet2,(uint32)
- SSL_CTX_sess_cache_full(ssl_acceptor_fd->ssl_context_));
+ (!ssl_acceptor_fd ? 0 :
+ SSL_CTX_sess_cache_full(ssl_acceptor_fd->ssl_context_)));
break;
case SHOW_SSL_CTX_SESS_MISSES:
net_store_data(&packet2,(uint32)
- SSL_CTX_sess_misses(ssl_acceptor_fd->ssl_context_));
+ (!ssl_acceptor_fd ? 0 :
+ SSL_CTX_sess_misses(ssl_acceptor_fd->ssl_context_)));
break;
case SHOW_SSL_CTX_SESS_TIMEOUTS:
net_store_data(&packet2,(uint32)
- SSL_CTX_sess_timeouts(ssl_acceptor_fd->ssl_context_));
+ (!ssl_acceptor_fd ? 0 :
+ SSL_CTX_sess_timeouts(ssl_acceptor_fd->ssl_context_)));
break;
case SHOW_SSL_CTX_SESS_NUMBER:
net_store_data(&packet2,(uint32)
- SSL_CTX_sess_number(ssl_acceptor_fd->ssl_context_));
+ (!ssl_acceptor_fd ? 0 :
+ SSL_CTX_sess_number(ssl_acceptor_fd->ssl_context_)));
break;
case SHOW_SSL_CTX_SESS_CONNECT:
net_store_data(&packet2,(uint32)
- SSL_CTX_sess_connect(ssl_acceptor_fd->ssl_context_));
+ (!ssl_acceptor_fd ? 0 :
+ SSL_CTX_sess_connect(ssl_acceptor_fd->ssl_context_)));
break;
case SHOW_SSL_CTX_SESS_GET_CACHE_SIZE:
net_store_data(&packet2,(uint32)
- SSL_CTX_sess_get_cache_size(ssl_acceptor_fd->ssl_context_));
+ (!ssl_acceptor_fd ? 0 :
+ SSL_CTX_sess_get_cache_size(ssl_acceptor_fd->ssl_context_)));
break;
case SHOW_SSL_CTX_GET_VERIFY_MODE:
net_store_data(&packet2,(uint32)
- SSL_CTX_get_verify_mode(ssl_acceptor_fd->ssl_context_));
+ (!ssl_acceptor_fd ? 0 :
+ SSL_CTX_get_verify_mode(ssl_acceptor_fd->ssl_context_)));
break;
case SHOW_SSL_CTX_GET_VERIFY_DEPTH:
net_store_data(&packet2,(uint32)
- SSL_CTX_get_verify_depth(ssl_acceptor_fd->ssl_context_));
+ (!ssl_acceptor_fd ? 0 :
+ SSL_CTX_get_verify_depth(ssl_acceptor_fd->ssl_context_)));
break;
case SHOW_SSL_CTX_GET_SESSION_CACHE_MODE:
+ if (!ssl_acceptor_fd)
+ {
+ net_store_data(&packet2,"NONE" );
+ break;
+ }
switch(SSL_CTX_get_session_cache_mode(ssl_acceptor_fd->ssl_context_))
{
case SSL_SESS_CACHE_OFF:
@@ -1286,23 +1306,28 @@ int mysqld_show(THD *thd, const char *wild, show_var_st *variables)
SSL_get_verify_depth(thd->net.vio->ssl_):0));
break;
case SHOW_SSL_GET_CIPHER:
- net_store_data(&packet2, thd->net.vio->ssl_ ? SSL_get_cipher(thd->net.vio->ssl_) : "");
+ net_store_data(&packet2, thd->net.vio->ssl_ ?
+ SSL_get_cipher(thd->net.vio->ssl_) : "");
+ break;
case SHOW_SSL_GET_CIPHER_LIST:
- if(thd->net.vio->ssl_)
+ if (thd->net.vio->ssl_)
{
- char buf[1024]="";
- for (int i=0; ; i++)
+ char buf[1024], *pos;
+ pos=buf;
+ for (int i=0 ; i++ ;)
{
const char *p=SSL_get_cipher_list(thd->net.vio->ssl_,i);
if (p == NULL)
break;
- if (i != 0)
- strcat(buf,":");
- strcat(buf,p);
- DBUG_PRINT("info",("cipher to add: %s,%s",p,buf));
+ pos=strmov(pos, p);
+ *pos++= ':';
}
+ if (pos != buf)
+ pos--; // Remove last ':'
+ *pos=0;
net_store_data(&packet2, buf);
- } else
+ }
+ else
net_store_data(&packet2, "");
break;