mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-5.0-maint include/mysql_com.h: Auto merged mysql-test/r/func_time.result: Auto merged mysql-test/t/func_time.test: Auto merged sql/item_cmpfunc.cc: Auto merged sql/mysql_priv.h: Auto merged sql/sql_class.h: Auto merged mysql-test/r/ctype_utf8.result: Manual merge. mysql-test/t/ctype_utf8.test: Manual merge.
This commit is contained in:
@ -26,9 +26,6 @@
|
|||||||
#define USERNAME_LENGTH 16
|
#define USERNAME_LENGTH 16
|
||||||
#define SERVER_VERSION_LENGTH 60
|
#define SERVER_VERSION_LENGTH 60
|
||||||
#define SQLSTATE_LENGTH 5
|
#define SQLSTATE_LENGTH 5
|
||||||
#define SYSTEM_CHARSET_MBMAXLEN 3
|
|
||||||
#define NAME_BYTE_LEN NAME_LEN*SYSTEM_CHARSET_MBMAXLEN
|
|
||||||
#define USERNAME_BYTE_LENGTH USERNAME_LENGTH*SYSTEM_CHARSET_MBMAXLEN
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
USER_HOST_BUFF_SIZE -- length of string buffer, that is enough to contain
|
USER_HOST_BUFF_SIZE -- length of string buffer, that is enough to contain
|
||||||
@ -36,7 +33,7 @@
|
|||||||
MySQL standard format:
|
MySQL standard format:
|
||||||
user_name_part@host_name_part\0
|
user_name_part@host_name_part\0
|
||||||
*/
|
*/
|
||||||
#define USER_HOST_BUFF_SIZE HOSTNAME_LENGTH + USERNAME_BYTE_LENGTH + 2
|
#define USER_HOST_BUFF_SIZE HOSTNAME_LENGTH + USERNAME_LENGTH + 2
|
||||||
|
|
||||||
#define LOCAL_HOST "localhost"
|
#define LOCAL_HOST "localhost"
|
||||||
#define LOCAL_HOST_NAMEDPIPE "."
|
#define LOCAL_HOST_NAMEDPIPE "."
|
||||||
|
@ -1069,6 +1069,7 @@ explain select a from t1 group by a;
|
|||||||
select a from t1 group by a;
|
select a from t1 group by a;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Bug#20393: User name truncation in mysql client
|
# Bug#20393: User name truncation in mysql client
|
||||||
# Bug#21432: Database/Table name limited to 64 bytes, not chars, problems with multi-byte
|
# Bug#21432: Database/Table name limited to 64 bytes, not chars, problems with multi-byte
|
||||||
@ -1096,7 +1097,6 @@ explain
|
|||||||
select substr(Z.a,-1), Z.a from t1 as Y join t1 as Z on Y.a=Z.a order by 1;
|
select substr(Z.a,-1), Z.a from t1 as Y join t1 as Z on Y.a=Z.a order by 1;
|
||||||
select substr(Z.a,-1), Z.a from t1 as Y join t1 as Z on Y.a=Z.a order by 1;
|
select substr(Z.a,-1), Z.a from t1 as Y join t1 as Z on Y.a=Z.a order by 1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
# End of 4.1 tests
|
# End of 4.1 tests
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -97,11 +97,11 @@ port='@MYSQL_TCP_PORT@'
|
|||||||
ldflags='@LDFLAGS@'
|
ldflags='@LDFLAGS@'
|
||||||
|
|
||||||
# Create options
|
# Create options
|
||||||
# We intentionally add a space to the beginning of lib strings, simplifies replace later
|
# We intentionally add a space to the beginning and end of lib strings, simplifies replace later
|
||||||
libs=" $ldflags -L$pkglibdir -lmysqlclient @ZLIB_DEPS@ @NON_THREADED_LIBS@"
|
libs=" $ldflags -L$pkglibdir -lmysqlclient @ZLIB_DEPS@ @NON_THREADED_LIBS@"
|
||||||
libs="$libs @openssl_libs@ @STATIC_NSS_FLAGS@"
|
libs="$libs @openssl_libs@ @STATIC_NSS_FLAGS@ "
|
||||||
libs_r=" $ldflags -L$pkglibdir -lmysqlclient_r @ZLIB_DEPS@ @LIBS@ @openssl_libs@"
|
libs_r=" $ldflags -L$pkglibdir -lmysqlclient_r @ZLIB_DEPS@ @LIBS@ @openssl_libs@ "
|
||||||
embedded_libs=" $ldflags -L$pkglibdir -lmysqld @ZLIB_DEPS@ @LIBS@ @WRAPLIBS@ @innodb_system_libs@ @openssl_libs@"
|
embedded_libs=" $ldflags -L$pkglibdir -lmysqld @ZLIB_DEPS@ @LIBS@ @WRAPLIBS@ @innodb_system_libs@ @openssl_libs@ "
|
||||||
|
|
||||||
cflags="-I$pkgincludedir @CFLAGS@ " #note: end space!
|
cflags="-I$pkgincludedir @CFLAGS@ " #note: end space!
|
||||||
include="-I$pkgincludedir"
|
include="-I$pkgincludedir"
|
||||||
@ -111,8 +111,9 @@ include="-I$pkgincludedir"
|
|||||||
# and -xstrconst to make --cflags usable for Sun Forte C++
|
# and -xstrconst to make --cflags usable for Sun Forte C++
|
||||||
for remove in DDBUG_OFF DSAFEMALLOC USAFEMALLOC DSAFE_MUTEX \
|
for remove in DDBUG_OFF DSAFEMALLOC USAFEMALLOC DSAFE_MUTEX \
|
||||||
DPEDANTIC_SAFEMALLOC DUNIV_MUST_NOT_INLINE DFORCE_INIT_OF_VARS \
|
DPEDANTIC_SAFEMALLOC DUNIV_MUST_NOT_INLINE DFORCE_INIT_OF_VARS \
|
||||||
DEXTRA_DEBUG DHAVE_purify 'O[0-9]' 'W[-A-Za-z]*' \
|
DEXTRA_DEBUG DHAVE_purify O 'O[0-9]' 'xO[0-9]' 'W[-A-Za-z]*' \
|
||||||
Xa xstrconst "xc99=none"
|
Xa xstrconst "xc99=none" \
|
||||||
|
unroll2 ip mp restrict
|
||||||
do
|
do
|
||||||
# The first option we might strip will always have a space before it because
|
# The first option we might strip will always have a space before it because
|
||||||
# we set -I$pkgincludedir as the first option
|
# we set -I$pkgincludedir as the first option
|
||||||
@ -121,7 +122,7 @@ done
|
|||||||
cflags=`echo "$cflags"|sed -e 's/ *\$//'`
|
cflags=`echo "$cflags"|sed -e 's/ *\$//'`
|
||||||
|
|
||||||
# Same for --libs(_r)
|
# Same for --libs(_r)
|
||||||
for remove in lmtmalloc
|
for remove in lmtmalloc static-libcxa i-static
|
||||||
do
|
do
|
||||||
# We know the strings starts with a space
|
# We know the strings starts with a space
|
||||||
libs=`echo "$libs"|sed -e "s/ -$remove */ /g"`
|
libs=`echo "$libs"|sed -e "s/ -$remove */ /g"`
|
||||||
|
@ -1758,7 +1758,7 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
|
|||||||
const char *passwd, const char *db,
|
const char *passwd, const char *db,
|
||||||
uint port, const char *unix_socket,ulong client_flag)
|
uint port, const char *unix_socket,ulong client_flag)
|
||||||
{
|
{
|
||||||
char buff[NAME_BYTE_LEN+USERNAME_BYTE_LENGTH+100];
|
char buff[NAME_LEN+USERNAME_LENGTH+100];
|
||||||
char *end,*host_info;
|
char *end,*host_info;
|
||||||
my_socket sock;
|
my_socket sock;
|
||||||
in_addr_t ip_addr;
|
in_addr_t ip_addr;
|
||||||
@ -2217,7 +2217,7 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
|
|||||||
mysql->server_status, client_flag));
|
mysql->server_status, client_flag));
|
||||||
/* This needs to be changed as it's not useful with big packets */
|
/* This needs to be changed as it's not useful with big packets */
|
||||||
if (user && user[0])
|
if (user && user[0])
|
||||||
strmake(end,user,USERNAME_BYTE_LENGTH); /* Max user name */
|
strmake(end,user,USERNAME_LENGTH); /* Max user name */
|
||||||
else
|
else
|
||||||
read_user_name((char*) end);
|
read_user_name((char*) end);
|
||||||
|
|
||||||
@ -2247,7 +2247,7 @@ CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
|
|||||||
/* Add database if needed */
|
/* Add database if needed */
|
||||||
if (db && (mysql->server_capabilities & CLIENT_CONNECT_WITH_DB))
|
if (db && (mysql->server_capabilities & CLIENT_CONNECT_WITH_DB))
|
||||||
{
|
{
|
||||||
end= strmake(end, db, NAME_BYTE_LEN) + 1;
|
end= strmake(end, db, NAME_LEN) + 1;
|
||||||
mysql->db= my_strdup(db,MYF(MY_WME));
|
mysql->db= my_strdup(db,MYF(MY_WME));
|
||||||
db= 0;
|
db= 0;
|
||||||
}
|
}
|
||||||
|
@ -578,7 +578,7 @@ void get_default_definer(THD *thd, LEX_USER *definer);
|
|||||||
LEX_USER *create_default_definer(THD *thd);
|
LEX_USER *create_default_definer(THD *thd);
|
||||||
LEX_USER *create_definer(THD *thd, LEX_STRING *user_name, LEX_STRING *host_name);
|
LEX_USER *create_definer(THD *thd, LEX_STRING *user_name, LEX_STRING *host_name);
|
||||||
LEX_USER *get_current_user(THD *thd, LEX_USER *user);
|
LEX_USER *get_current_user(THD *thd, LEX_USER *user);
|
||||||
bool check_string_length(CHARSET_INFO *cs, LEX_STRING *str,
|
bool check_string_length(LEX_STRING *str,
|
||||||
const char *err_msg, uint max_length);
|
const char *err_msg, uint max_length);
|
||||||
|
|
||||||
enum enum_mysql_completiontype {
|
enum enum_mysql_completiontype {
|
||||||
|
@ -406,7 +406,7 @@ typedef struct st_master_info
|
|||||||
/* the variables below are needed because we can change masters on the fly */
|
/* the variables below are needed because we can change masters on the fly */
|
||||||
char master_log_name[FN_REFLEN];
|
char master_log_name[FN_REFLEN];
|
||||||
char host[HOSTNAME_LENGTH+1];
|
char host[HOSTNAME_LENGTH+1];
|
||||||
char user[USERNAME_BYTE_LENGTH+1];
|
char user[USERNAME_LENGTH+1];
|
||||||
char password[MAX_PASSWORD_LENGTH+1];
|
char password[MAX_PASSWORD_LENGTH+1];
|
||||||
my_bool ssl; // enables use of SSL connection if true
|
my_bool ssl; // enables use of SSL connection if true
|
||||||
char ssl_ca[FN_REFLEN], ssl_capath[FN_REFLEN], ssl_cert[FN_REFLEN];
|
char ssl_ca[FN_REFLEN], ssl_capath[FN_REFLEN], ssl_cert[FN_REFLEN];
|
||||||
|
@ -404,16 +404,16 @@ db_load_routine(THD *thd, int type, sp_name *name, sp_head **sphp,
|
|||||||
{
|
{
|
||||||
LEX *old_lex= thd->lex, newlex;
|
LEX *old_lex= thd->lex, newlex;
|
||||||
String defstr;
|
String defstr;
|
||||||
char old_db_buf[NAME_BYTE_LEN+1];
|
char old_db_buf[NAME_LEN+1];
|
||||||
LEX_STRING old_db= { old_db_buf, sizeof(old_db_buf) };
|
LEX_STRING old_db= { old_db_buf, sizeof(old_db_buf) };
|
||||||
bool dbchanged;
|
bool dbchanged;
|
||||||
ulong old_sql_mode= thd->variables.sql_mode;
|
ulong old_sql_mode= thd->variables.sql_mode;
|
||||||
ha_rows old_select_limit= thd->variables.select_limit;
|
ha_rows old_select_limit= thd->variables.select_limit;
|
||||||
sp_rcontext *old_spcont= thd->spcont;
|
sp_rcontext *old_spcont= thd->spcont;
|
||||||
|
|
||||||
char definer_user_name_holder[USERNAME_BYTE_LENGTH + 1];
|
char definer_user_name_holder[USERNAME_LENGTH + 1];
|
||||||
LEX_STRING_WITH_INIT definer_user_name(definer_user_name_holder,
|
LEX_STRING_WITH_INIT definer_user_name(definer_user_name_holder,
|
||||||
USERNAME_BYTE_LENGTH);
|
USERNAME_LENGTH);
|
||||||
|
|
||||||
char definer_host_name_holder[HOSTNAME_LENGTH + 1];
|
char definer_host_name_holder[HOSTNAME_LENGTH + 1];
|
||||||
LEX_STRING_WITH_INIT definer_host_name(definer_host_name_holder,
|
LEX_STRING_WITH_INIT definer_host_name(definer_host_name_holder,
|
||||||
@ -511,7 +511,7 @@ db_create_routine(THD *thd, int type, sp_head *sp)
|
|||||||
int ret;
|
int ret;
|
||||||
TABLE *table;
|
TABLE *table;
|
||||||
char definer[USER_HOST_BUFF_SIZE];
|
char definer[USER_HOST_BUFF_SIZE];
|
||||||
char old_db_buf[NAME_BYTE_LEN+1];
|
char old_db_buf[NAME_LEN+1];
|
||||||
LEX_STRING old_db= { old_db_buf, sizeof(old_db_buf) };
|
LEX_STRING old_db= { old_db_buf, sizeof(old_db_buf) };
|
||||||
bool dbchanged;
|
bool dbchanged;
|
||||||
DBUG_ENTER("db_create_routine");
|
DBUG_ENTER("db_create_routine");
|
||||||
|
@ -924,7 +924,7 @@ bool
|
|||||||
sp_head::execute(THD *thd)
|
sp_head::execute(THD *thd)
|
||||||
{
|
{
|
||||||
DBUG_ENTER("sp_head::execute");
|
DBUG_ENTER("sp_head::execute");
|
||||||
char old_db_buf[NAME_BYTE_LEN+1];
|
char old_db_buf[NAME_LEN+1];
|
||||||
LEX_STRING old_db= { old_db_buf, sizeof(old_db_buf) };
|
LEX_STRING old_db= { old_db_buf, sizeof(old_db_buf) };
|
||||||
bool dbchanged;
|
bool dbchanged;
|
||||||
sp_rcontext *ctx;
|
sp_rcontext *ctx;
|
||||||
@ -1957,8 +1957,8 @@ sp_head::set_info(longlong created, longlong modified,
|
|||||||
void
|
void
|
||||||
sp_head::set_definer(const char *definer, uint definerlen)
|
sp_head::set_definer(const char *definer, uint definerlen)
|
||||||
{
|
{
|
||||||
char user_name_holder[USERNAME_BYTE_LENGTH + 1];
|
char user_name_holder[USERNAME_LENGTH + 1];
|
||||||
LEX_STRING_WITH_INIT user_name(user_name_holder, USERNAME_BYTE_LENGTH);
|
LEX_STRING_WITH_INIT user_name(user_name_holder, USERNAME_LENGTH);
|
||||||
|
|
||||||
char host_name_holder[HOSTNAME_LENGTH + 1];
|
char host_name_holder[HOSTNAME_LENGTH + 1];
|
||||||
LEX_STRING_WITH_INIT host_name(host_name_holder, HOSTNAME_LENGTH);
|
LEX_STRING_WITH_INIT host_name(host_name_holder, HOSTNAME_LENGTH);
|
||||||
|
@ -54,7 +54,7 @@ static byte* acl_entry_get_key(acl_entry *entry,uint *length,
|
|||||||
}
|
}
|
||||||
|
|
||||||
#define IP_ADDR_STRLEN (3+1+3+1+3+1+3)
|
#define IP_ADDR_STRLEN (3+1+3+1+3+1+3)
|
||||||
#define ACL_KEY_LENGTH (IP_ADDR_STRLEN+1+NAME_BYTE_LEN+1+USERNAME_BYTE_LENGTH+1)
|
#define ACL_KEY_LENGTH (IP_ADDR_STRLEN+1+NAME_LEN+1+USERNAME_LENGTH+1)
|
||||||
|
|
||||||
static DYNAMIC_ARRAY acl_hosts,acl_users,acl_dbs;
|
static DYNAMIC_ARRAY acl_hosts,acl_users,acl_dbs;
|
||||||
static MEM_ROOT mem, memex;
|
static MEM_ROOT mem, memex;
|
||||||
@ -197,7 +197,7 @@ static my_bool acl_load(THD *thd, TABLE_LIST *tables)
|
|||||||
READ_RECORD read_record_info;
|
READ_RECORD read_record_info;
|
||||||
my_bool return_val= 1;
|
my_bool return_val= 1;
|
||||||
bool check_no_resolve= specialflag & SPECIAL_NO_RESOLVE;
|
bool check_no_resolve= specialflag & SPECIAL_NO_RESOLVE;
|
||||||
char tmp_name[NAME_BYTE_LEN+1];
|
char tmp_name[NAME_LEN+1];
|
||||||
int password_length;
|
int password_length;
|
||||||
DBUG_ENTER("acl_load");
|
DBUG_ENTER("acl_load");
|
||||||
|
|
||||||
@ -2264,7 +2264,7 @@ static GRANT_NAME *name_hash_search(HASH *name_hash,
|
|||||||
const char *user, const char *tname,
|
const char *user, const char *tname,
|
||||||
bool exact)
|
bool exact)
|
||||||
{
|
{
|
||||||
char helping [NAME_BYTE_LEN*2+USERNAME_BYTE_LENGTH+3];
|
char helping [NAME_LEN*2+USERNAME_LENGTH+3];
|
||||||
uint len;
|
uint len;
|
||||||
GRANT_NAME *grant_name,*found=0;
|
GRANT_NAME *grant_name,*found=0;
|
||||||
HASH_SEARCH_STATE state;
|
HASH_SEARCH_STATE state;
|
||||||
@ -3167,7 +3167,7 @@ bool mysql_grant(THD *thd, const char *db, List <LEX_USER> &list,
|
|||||||
{
|
{
|
||||||
List_iterator <LEX_USER> str_list (list);
|
List_iterator <LEX_USER> str_list (list);
|
||||||
LEX_USER *Str, *tmp_Str;
|
LEX_USER *Str, *tmp_Str;
|
||||||
char tmp_db[NAME_BYTE_LEN+1];
|
char tmp_db[NAME_LEN+1];
|
||||||
bool create_new_users=0;
|
bool create_new_users=0;
|
||||||
TABLE_LIST tables[2];
|
TABLE_LIST tables[2];
|
||||||
DBUG_ENTER("mysql_grant");
|
DBUG_ENTER("mysql_grant");
|
||||||
@ -3231,7 +3231,7 @@ bool mysql_grant(THD *thd, const char *db, List <LEX_USER> &list,
|
|||||||
{
|
{
|
||||||
result= TRUE;
|
result= TRUE;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (replace_user_table(thd, tables[0].table, *Str,
|
if (replace_user_table(thd, tables[0].table, *Str,
|
||||||
(!db ? rights : 0), revoke_grant, create_new_users,
|
(!db ? rights : 0), revoke_grant, create_new_users,
|
||||||
test(thd->variables.sql_mode &
|
test(thd->variables.sql_mode &
|
||||||
@ -3867,7 +3867,7 @@ err2:
|
|||||||
bool check_grant_db(THD *thd,const char *db)
|
bool check_grant_db(THD *thd,const char *db)
|
||||||
{
|
{
|
||||||
Security_context *sctx= thd->security_ctx;
|
Security_context *sctx= thd->security_ctx;
|
||||||
char helping [NAME_BYTE_LEN+USERNAME_BYTE_LENGTH+2];
|
char helping [NAME_LEN+USERNAME_LENGTH+2];
|
||||||
uint len;
|
uint len;
|
||||||
bool error= 1;
|
bool error= 1;
|
||||||
|
|
||||||
|
@ -200,7 +200,7 @@ class MYSQL_LOG: public TC_LOG
|
|||||||
IO_CACHE log_file;
|
IO_CACHE log_file;
|
||||||
IO_CACHE index_file;
|
IO_CACHE index_file;
|
||||||
char *name;
|
char *name;
|
||||||
char time_buff[20],db[NAME_BYTE_LEN+1];
|
char time_buff[20],db[NAME_LEN+1];
|
||||||
char log_file_name[FN_REFLEN],index_file_name[FN_REFLEN];
|
char log_file_name[FN_REFLEN],index_file_name[FN_REFLEN];
|
||||||
/*
|
/*
|
||||||
The max size before rotation (usable only if log_type == LOG_BIN: binary
|
The max size before rotation (usable only if log_type == LOG_BIN: binary
|
||||||
|
@ -1001,8 +1001,8 @@ static int check_connection(THD *thd)
|
|||||||
char *passwd= strend(user)+1;
|
char *passwd= strend(user)+1;
|
||||||
uint user_len= passwd - user - 1;
|
uint user_len= passwd - user - 1;
|
||||||
char *db= passwd;
|
char *db= passwd;
|
||||||
char db_buff[NAME_BYTE_LEN + 1]; // buffer to store db in utf8
|
char db_buff[NAME_LEN + 1]; // buffer to store db in utf8
|
||||||
char user_buff[USERNAME_BYTE_LENGTH + 1]; // buffer to store user in utf8
|
char user_buff[USERNAME_LENGTH + 1]; // buffer to store user in utf8
|
||||||
uint dummy_errors;
|
uint dummy_errors;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1662,7 +1662,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd,
|
|||||||
password. New clients send the size (1 byte) + string (not null
|
password. New clients send the size (1 byte) + string (not null
|
||||||
terminated, so also '\0' for empty string).
|
terminated, so also '\0' for empty string).
|
||||||
*/
|
*/
|
||||||
char db_buff[NAME_BYTE_LEN+1]; // buffer to store db in utf8
|
char db_buff[NAME_LEN+1]; // buffer to store db in utf8
|
||||||
char *db= passwd;
|
char *db= passwd;
|
||||||
uint passwd_len= thd->client_capabilities & CLIENT_SECURE_CONNECTION ?
|
uint passwd_len= thd->client_capabilities & CLIENT_SECURE_CONNECTION ?
|
||||||
*passwd++ : strlen(passwd);
|
*passwd++ : strlen(passwd);
|
||||||
@ -7565,7 +7565,6 @@ LEX_USER *get_current_user(THD *thd, LEX_USER *user)
|
|||||||
|
|
||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
check_string_length()
|
check_string_length()
|
||||||
cs string charset
|
|
||||||
str string to be checked
|
str string to be checked
|
||||||
err_msg error message to be displayed if the string is too long
|
err_msg error message to be displayed if the string is too long
|
||||||
max_length max length
|
max_length max length
|
||||||
@ -7575,13 +7574,13 @@ LEX_USER *get_current_user(THD *thd, LEX_USER *user)
|
|||||||
TRUE the passed string is longer than max_length
|
TRUE the passed string is longer than max_length
|
||||||
*/
|
*/
|
||||||
|
|
||||||
bool check_string_length(CHARSET_INFO *cs, LEX_STRING *str,
|
bool check_string_length(LEX_STRING *str, const char *err_msg,
|
||||||
const char *err_msg, uint max_length)
|
uint max_length)
|
||||||
{
|
{
|
||||||
if (cs->cset->charpos(cs, str->str, str->str + str->length,
|
if (str->length <= max_length)
|
||||||
max_length) >= str->length)
|
return FALSE;
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
my_error(ER_WRONG_STRING_LENGTH, MYF(0), str->str, err_msg, max_length);
|
my_error(ER_WRONG_STRING_LENGTH, MYF(0), str->str, err_msg, max_length);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -22,7 +22,7 @@ typedef struct st_slave_info
|
|||||||
uint32 server_id;
|
uint32 server_id;
|
||||||
uint32 rpl_recovery_rank, master_id;
|
uint32 rpl_recovery_rank, master_id;
|
||||||
char host[HOSTNAME_LENGTH+1];
|
char host[HOSTNAME_LENGTH+1];
|
||||||
char user[USERNAME_BYTE_LENGTH+1];
|
char user[USERNAME_LENGTH+1];
|
||||||
char password[MAX_PASSWORD_LENGTH+1];
|
char password[MAX_PASSWORD_LENGTH+1];
|
||||||
uint16 port;
|
uint16 port;
|
||||||
THD* thd;
|
THD* thd;
|
||||||
|
@ -7523,7 +7523,7 @@ user:
|
|||||||
$$->host.str= (char *) "%";
|
$$->host.str= (char *) "%";
|
||||||
$$->host.length= 1;
|
$$->host.length= 1;
|
||||||
|
|
||||||
if (check_string_length(system_charset_info, &$$->user,
|
if (check_string_length(&$$->user,
|
||||||
ER(ER_USERNAME), USERNAME_LENGTH))
|
ER(ER_USERNAME), USERNAME_LENGTH))
|
||||||
YYABORT;
|
YYABORT;
|
||||||
}
|
}
|
||||||
@ -7534,9 +7534,9 @@ user:
|
|||||||
YYABORT;
|
YYABORT;
|
||||||
$$->user = $1; $$->host=$3;
|
$$->user = $1; $$->host=$3;
|
||||||
|
|
||||||
if (check_string_length(system_charset_info, &$$->user,
|
if (check_string_length(&$$->user,
|
||||||
ER(ER_USERNAME), USERNAME_LENGTH) ||
|
ER(ER_USERNAME), USERNAME_LENGTH) ||
|
||||||
check_string_length(&my_charset_latin1, &$$->host,
|
check_string_length(&$$->host,
|
||||||
ER(ER_HOSTNAME), HOSTNAME_LENGTH))
|
ER(ER_HOSTNAME), HOSTNAME_LENGTH))
|
||||||
YYABORT;
|
YYABORT;
|
||||||
}
|
}
|
||||||
|
@ -1592,7 +1592,7 @@ char *get_field(MEM_ROOT *mem, Field *field)
|
|||||||
|
|
||||||
bool check_db_name(char *name)
|
bool check_db_name(char *name)
|
||||||
{
|
{
|
||||||
uint name_length= 0; // name length in symbols
|
char *start= name;
|
||||||
/* Used to catch empty names and names with end space */
|
/* Used to catch empty names and names with end space */
|
||||||
bool last_char_is_space= TRUE;
|
bool last_char_is_space= TRUE;
|
||||||
|
|
||||||
@ -1609,7 +1609,6 @@ bool check_db_name(char *name)
|
|||||||
name+system_charset_info->mbmaxlen);
|
name+system_charset_info->mbmaxlen);
|
||||||
if (len)
|
if (len)
|
||||||
{
|
{
|
||||||
name_length++;
|
|
||||||
name += len;
|
name += len;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -1617,13 +1616,12 @@ bool check_db_name(char *name)
|
|||||||
#else
|
#else
|
||||||
last_char_is_space= *name==' ';
|
last_char_is_space= *name==' ';
|
||||||
#endif
|
#endif
|
||||||
name_length++;
|
|
||||||
if (*name == '/' || *name == '\\' || *name == FN_LIBCHAR ||
|
if (*name == '/' || *name == '\\' || *name == FN_LIBCHAR ||
|
||||||
*name == FN_EXTCHAR)
|
*name == FN_EXTCHAR)
|
||||||
return 1;
|
return 1;
|
||||||
name++;
|
name++;
|
||||||
}
|
}
|
||||||
return (last_char_is_space || name_length > NAME_LEN);
|
return last_char_is_space || (uint) (name - start) > NAME_LEN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user