mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
Remove CLIENT_SSL_VERIFY_SERVER_CERT
Since TLS server certificate verification is a client
only option, this flag is removed in both client (C/C)
and MariaDB server capability flags.
This patch reverts commit 89d759b93e
(MySQL Bug #21543) and stores the server certificate validation
option in mysql->options.extensions.
This commit is contained in:
@@ -275,7 +275,7 @@ enum enum_indicator_type
|
|||||||
#define CLIENT_DEPRECATE_EOF (1ULL << 24)
|
#define CLIENT_DEPRECATE_EOF (1ULL << 24)
|
||||||
|
|
||||||
#define CLIENT_PROGRESS_OBSOLETE (1ULL << 29)
|
#define CLIENT_PROGRESS_OBSOLETE (1ULL << 29)
|
||||||
#define CLIENT_SSL_VERIFY_SERVER_CERT (1ULL << 30)
|
#define CLIENT_SSL_VERIFY_SERVER_CERT_OBSOLETE (1ULL << 30)
|
||||||
/*
|
/*
|
||||||
It used to be that if mysql_real_connect() failed, it would delete any
|
It used to be that if mysql_real_connect() failed, it would delete any
|
||||||
options set by the client, unless the CLIENT_REMEMBER_OPTIONS flag was
|
options set by the client, unless the CLIENT_REMEMBER_OPTIONS flag was
|
||||||
@@ -326,7 +326,6 @@ enum enum_indicator_type
|
|||||||
CLIENT_MULTI_STATEMENTS | \
|
CLIENT_MULTI_STATEMENTS | \
|
||||||
CLIENT_MULTI_RESULTS | \
|
CLIENT_MULTI_RESULTS | \
|
||||||
CLIENT_PS_MULTI_RESULTS | \
|
CLIENT_PS_MULTI_RESULTS | \
|
||||||
CLIENT_SSL_VERIFY_SERVER_CERT | \
|
|
||||||
CLIENT_REMEMBER_OPTIONS | \
|
CLIENT_REMEMBER_OPTIONS | \
|
||||||
MARIADB_CLIENT_PROGRESS | \
|
MARIADB_CLIENT_PROGRESS | \
|
||||||
CLIENT_PLUGIN_AUTH | \
|
CLIENT_PLUGIN_AUTH | \
|
||||||
@@ -343,9 +342,8 @@ enum enum_indicator_type
|
|||||||
If any of the optional flags is supported by the build it will be switched
|
If any of the optional flags is supported by the build it will be switched
|
||||||
on before sending to the client during the connection handshake.
|
on before sending to the client during the connection handshake.
|
||||||
*/
|
*/
|
||||||
#define CLIENT_BASIC_FLAGS (((CLIENT_ALL_FLAGS & ~CLIENT_SSL) \
|
#define CLIENT_BASIC_FLAGS ((CLIENT_ALL_FLAGS & ~CLIENT_SSL) \
|
||||||
& ~CLIENT_COMPRESS) \
|
& ~CLIENT_COMPRESS)
|
||||||
& ~CLIENT_SSL_VERIFY_SERVER_CERT)
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Is raised when a multi-statement transaction
|
Is raised when a multi-statement transaction
|
||||||
|
@@ -44,6 +44,7 @@ struct st_mysql_options_extention {
|
|||||||
struct mysql_async_context *async_context;
|
struct mysql_async_context *async_context;
|
||||||
HASH connection_attributes;
|
HASH connection_attributes;
|
||||||
size_t connection_attributes_length;
|
size_t connection_attributes_length;
|
||||||
|
my_bool tls_verify_server_cert;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct st_mysql_methods
|
typedef struct st_mysql_methods
|
||||||
|
@@ -2093,7 +2093,7 @@ static int send_client_reply_packet(MCPVIO_EXT *mpvio,
|
|||||||
If the server does not support ssl, we abort the connection.
|
If the server does not support ssl, we abort the connection.
|
||||||
*/
|
*/
|
||||||
if (mysql->options.use_ssl &&
|
if (mysql->options.use_ssl &&
|
||||||
(mysql->client_flag & CLIENT_SSL_VERIFY_SERVER_CERT) &&
|
(mysql->options.extension && mysql->options.extension->tls_verify_server_cert) &&
|
||||||
!(mysql->server_capabilities & CLIENT_SSL))
|
!(mysql->server_capabilities & CLIENT_SSL))
|
||||||
{
|
{
|
||||||
set_mysql_extended_error(mysql, CR_SSL_CONNECTION_ERROR, unknown_sqlstate,
|
set_mysql_extended_error(mysql, CR_SSL_CONNECTION_ERROR, unknown_sqlstate,
|
||||||
@@ -2163,7 +2163,7 @@ static int send_client_reply_packet(MCPVIO_EXT *mpvio,
|
|||||||
DBUG_PRINT("info", ("IO layer change done!"));
|
DBUG_PRINT("info", ("IO layer change done!"));
|
||||||
|
|
||||||
/* Verify server cert */
|
/* Verify server cert */
|
||||||
if ((mysql->client_flag & CLIENT_SSL_VERIFY_SERVER_CERT) &&
|
if ((mysql->options.extension && mysql->options.extension->tls_verify_server_cert) &&
|
||||||
ssl_verify_server_cert(net->vio, mysql->host, &cert_error))
|
ssl_verify_server_cert(net->vio, mysql->host, &cert_error))
|
||||||
{
|
{
|
||||||
set_mysql_extended_error(mysql, CR_SSL_CONNECTION_ERROR, unknown_sqlstate,
|
set_mysql_extended_error(mysql, CR_SSL_CONNECTION_ERROR, unknown_sqlstate,
|
||||||
@@ -3847,10 +3847,12 @@ mysql_options(MYSQL *mysql,enum mysql_option option, const void *arg)
|
|||||||
mysql->options.use_thread_specific_memory= *(my_bool *) arg;
|
mysql->options.use_thread_specific_memory= *(my_bool *) arg;
|
||||||
break;
|
break;
|
||||||
case MYSQL_OPT_SSL_VERIFY_SERVER_CERT:
|
case MYSQL_OPT_SSL_VERIFY_SERVER_CERT:
|
||||||
if (*(my_bool*) arg)
|
if (!mysql->options.extension)
|
||||||
mysql->options.client_flag|= CLIENT_SSL_VERIFY_SERVER_CERT;
|
mysql->options.extension= (struct st_mysql_options_extention *)
|
||||||
else
|
my_malloc(sizeof(struct st_mysql_options_extention),
|
||||||
mysql->options.client_flag&= ~CLIENT_SSL_VERIFY_SERVER_CERT;
|
MYF(MY_WME | MY_ZEROFILL));
|
||||||
|
if (mysql->options.extension)
|
||||||
|
mysql->options.extension->tls_verify_server_cert= *(my_bool*) arg;
|
||||||
break;
|
break;
|
||||||
case MYSQL_PLUGIN_DIR:
|
case MYSQL_PLUGIN_DIR:
|
||||||
EXTENSION_SET_STRING(&mysql->options, plugin_dir, arg);
|
EXTENSION_SET_STRING(&mysql->options, plugin_dir, arg);
|
||||||
|
@@ -12759,7 +12759,6 @@ static bool send_server_handshake_packet(MPVIO_EXT *mpvio,
|
|||||||
if (ssl_acceptor_fd)
|
if (ssl_acceptor_fd)
|
||||||
{
|
{
|
||||||
thd->client_capabilities |= CLIENT_SSL;
|
thd->client_capabilities |= CLIENT_SSL;
|
||||||
thd->client_capabilities |= CLIENT_SSL_VERIFY_SERVER_CERT;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data_len)
|
if (data_len)
|
||||||
|
Reference in New Issue
Block a user