MXS-2011 Assume argument values have been dequoted

Functions setting particular values no longer de-quote strings,
but assume the de-quoting already has been made.
This commit is contained in:
Johan Wikman
2018-08-23 12:37:12 +03:00
parent f946272af1
commit 51fffedf7d
2 changed files with 37 additions and 133 deletions

View File

@ -161,12 +161,10 @@ static void blr_slave_send_error_packet(ROUTER_SLAVE *slave,
static int blr_handle_change_master(ROUTER_INSTANCE* router,
char *command,
char *error);
static int blr_set_master_hostname(ROUTER_INSTANCE *router,
char *hostname);
static int blr_set_master_port(ROUTER_INSTANCE *router,
char *command);
static int blr_set_master_hostname(ROUTER_INSTANCE *router, const char *hostname);
static int blr_set_master_port(ROUTER_INSTANCE *router, const char *command);
static char *blr_set_master_logfile(ROUTER_INSTANCE *router,
char *filename,
const char *filename,
char *error);
static void blr_master_get_config(ROUTER_INSTANCE *router,
MASTER_SERVER_CFG *current_master);
@ -182,8 +180,8 @@ static int blr_slave_send_ok_message(ROUTER_INSTANCE* router,
static char *blr_get_parsed_command_value(char *input);
static char **blr_validate_change_master_option(char *option,
CHANGE_MASTER_OPTIONS *config);
static int blr_set_master_user(ROUTER_INSTANCE *router, char *user);
static int blr_set_master_password(ROUTER_INSTANCE *router, char *password);
static int blr_set_master_user(ROUTER_INSTANCE *router, const char *user);
static int blr_set_master_password(ROUTER_INSTANCE *router, const char *password);
static int blr_parse_change_master_command(char *input,
char *error_string,
CHANGE_MASTER_OPTIONS *config);
@ -211,7 +209,7 @@ int blr_test_parse_change_master_command(char *input,
char *error_string,
CHANGE_MASTER_OPTIONS *config);
char *blr_test_set_master_logfile(ROUTER_INSTANCE *router,
char *filename,
const char *filename,
char *error);
static int blr_slave_handle_variables(ROUTER_INSTANCE *router,
ROUTER_SLAVE *slave,
@ -4394,29 +4392,13 @@ int blr_handle_change_master(ROUTER_INSTANCE* router,
* @param hostname The hostname to set
* @return 1 for applied change, 0 otherwise
*/
static int
blr_set_master_hostname(ROUTER_INSTANCE *router, char *hostname)
static int blr_set_master_hostname(ROUTER_INSTANCE *router, const char *hostname)
{
if (hostname)
{
char *ptr;
char *end;
ptr = strchr(hostname, '\'');
if (ptr)
{
ptr++;
}
else
{
ptr = hostname;
}
end = strchr(ptr, '\'');
if (end)
{
*end = '\0';
}
mxb_assert((*hostname != '\'') && (*hostname != '"'));
server_update_address(router->service->dbref->server, ptr);
server_update_address(router->service->dbref->server, hostname);
MXS_INFO("%s: New MASTER_HOST is [%s]",
router->service->name,
@ -4436,8 +4418,7 @@ blr_set_master_hostname(ROUTER_INSTANCE *router, char *hostname)
* @return 1 for applied change, 0 otherwise
*/
static int
blr_set_master_port(ROUTER_INSTANCE *router, char *port)
static int blr_set_master_port(ROUTER_INSTANCE *router, const char *port)
{
unsigned short new_port;
@ -4473,32 +4454,20 @@ blr_set_master_port(ROUTER_INSTANCE *router, char *port)
*/
static char *
blr_set_master_logfile(ROUTER_INSTANCE *router,
char *filename,
const char *filename,
char *error)
{
char *new_binlog_file = NULL;
if (filename)
{
mxb_assert((*filename != '\'') && (*filename != '"'));
long next_binlog_seqname;
char *file_ptr;
char *end;
file_ptr = strchr(filename, '\'');
if (file_ptr)
{
file_ptr++;
}
else
{
file_ptr = filename;
}
end = strchr(file_ptr, '\'');
if (end)
{
*end = '\0';
}
file_ptr = (char*)filename;
/* check binlog filename format */
end = strchr(file_ptr, '.');
@ -4754,34 +4723,17 @@ blr_master_apply_config(ROUTER_INSTANCE *router, MASTER_SERVER_CFG *prev_master)
* @param user The userto set
* @return 1 for applied change, 0 otherwise
*/
static int
blr_set_master_user(ROUTER_INSTANCE *router, char *user)
static int blr_set_master_user(ROUTER_INSTANCE *router, const char *user)
{
if (user != NULL)
{
char *ptr;
char *end;
ptr = strchr(user, '\'');
if (ptr)
{
ptr++;
}
else
{
ptr = user;
}
end = strchr(ptr, '\'');
if (end)
{
*end = '\0';
}
mxb_assert((*user != '\'') && (*user != '"'));
if (router->user)
{
MXS_FREE(router->user);
}
router->user = MXS_STRDUP_A(ptr);
router->user = MXS_STRDUP_A(user);
MXS_INFO("%s: New MASTER_USER is [%s]",
router->service->name,
@ -4800,34 +4752,17 @@ blr_set_master_user(ROUTER_INSTANCE *router, char *user)
* @param password The password to set
* @return 1 for applied change, 0 otherwise
*/
static int
blr_set_master_password(ROUTER_INSTANCE *router, char *password)
static int blr_set_master_password(ROUTER_INSTANCE *router, const char *password)
{
if (password != NULL)
{
char *ptr;
char *end;
ptr = strchr(password, '\'');
if (ptr)
{
ptr++;
}
else
{
ptr = password;
}
end = strchr(ptr, '\'');
if (end)
{
*end = '\0';
}
mxb_assert((*password != '\'') && (*password != '"'));
if (router->password)
{
MXS_FREE(router->password);
}
router->password = MXS_STRDUP_A(ptr);
router->password = MXS_STRDUP_A(password);
/* don't log new password */
@ -5520,7 +5455,7 @@ blr_test_parse_change_master_command(char *input,
*/
char *
blr_test_set_master_logfile(ROUTER_INSTANCE *router,
char *filename,
const char *filename,
char *error)
{
return blr_set_master_logfile(router, filename, error);
@ -6175,45 +6110,6 @@ blr_slave_send_heartbeat(ROUTER_INSTANCE *router, ROUTER_SLAVE *slave)
return MXS_SESSION_ROUTE_REPLY(slave->dcb->session, h_event);
}
/**
* Skip the ' char and return pointer to new start position.
* The last ' char is removed.
*
* @param input The input string
* @return Position after first '
*/
char *
blr_escape_config_string(char *input)
{
char *ptr;
char *end;
ptr = strchr(input, '\'');
if (!ptr)
{
return input;
}
else
{
if (ptr + 1)
{
ptr++;
}
else
{
*ptr = '\0';
}
}
end = strchr(ptr, '\'');
if (end)
{
*end = '\0';
}
return ptr;
}
/**
* Change the replication SSL options
*
@ -6280,41 +6176,49 @@ blr_set_master_ssl(ROUTER_INSTANCE *router,
/* Update options in router fields and in server_ssl struct, if present */
if (config.ssl_key)
{
mxb_assert((*config.ssl_key != '\'') && (*config.ssl_key != '"'));
if (server_ssl)
{
MXS_FREE(server_ssl->ssl_key);
server_ssl->ssl_key = MXS_STRDUP_A(blr_escape_config_string(config.ssl_key));
server_ssl->ssl_key = MXS_STRDUP_A(config.ssl_key);
}
MXS_FREE(router->ssl_key);
router->ssl_key = MXS_STRDUP_A(blr_escape_config_string(config.ssl_key));
router->ssl_key = MXS_STRDUP_A(config.ssl_key);
updated++;
}
if (config.ssl_ca)
{
mxb_assert((*config.ssl_ca != '\'') && (*config.ssl_ca != '"'));
if (server_ssl)
{
MXS_FREE(server_ssl->ssl_ca_cert);
server_ssl->ssl_ca_cert = MXS_STRDUP_A(blr_escape_config_string(config.ssl_ca));
server_ssl->ssl_ca_cert = MXS_STRDUP_A(config.ssl_ca);
}
MXS_FREE(router->ssl_ca);
router->ssl_ca = MXS_STRDUP_A(blr_escape_config_string(config.ssl_ca));
router->ssl_ca = MXS_STRDUP_A(config.ssl_ca);
updated++;
}
if (config.ssl_cert)
{
mxb_assert((*config.ssl_cert != '\'') && (*config.ssl_cert != '"'));
if (server_ssl)
{
MXS_FREE(server_ssl->ssl_cert);
server_ssl->ssl_cert = MXS_STRDUP_A(blr_escape_config_string(config.ssl_cert));
server_ssl->ssl_cert = MXS_STRDUP_A(config.ssl_cert);
}
MXS_FREE(router->ssl_cert);
router->ssl_cert = MXS_STRDUP_A(blr_escape_config_string(config.ssl_cert));
router->ssl_cert = MXS_STRDUP_A(config.ssl_cert);
updated++;
}
if (config.ssl_version && server_ssl)
{
char *ssl_version = blr_escape_config_string(config.ssl_version);
mxb_assert((*config.ssl_version != '\'') && (*config.ssl_version != '"'));
char *ssl_version = config.ssl_version;
if (ssl_version && strlen(ssl_version))
{

View File

@ -60,7 +60,7 @@ static void printUsage(const char *progname);
static void master_free_parsed_options(CHANGE_MASTER_OPTIONS *options);
extern int blr_test_parse_change_master_command(char *input, char *error_string,
CHANGE_MASTER_OPTIONS *config);
extern char *blr_test_set_master_logfile(ROUTER_INSTANCE *router, char *filename, char *error);
extern char *blr_test_set_master_logfile(ROUTER_INSTANCE *router, const char *filename, char *error);
extern int blr_test_handle_change_master(ROUTER_INSTANCE* router, char *command, char *error);
static struct option long_options[] =