summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <gluh@mysql.com/gluh.(none)>2006-09-07 18:09:49 +0500
committerunknown <gluh@mysql.com/gluh.(none)>2006-09-07 18:09:49 +0500
commitdc6243e588b329ef281e28a4f4e33470bb36dd02 (patch)
tree7f2fae109d8c091edf98953bd18b6815977861a8
parent146049d2e491e2c6253aa7352bb2dfb1180f4489 (diff)
downloadmariadb-git-dc6243e588b329ef281e28a4f4e33470bb36dd02.tar.gz
after merge fix
include/mysql_com.h: USERNAME_LENGTH is changed to USERNAME_BYTE_LENGTH mysql-test/r/ctype_utf8.result: result fix mysql-test/t/ctype_utf8.test: test fix sql/sp.cc: NAME_LEN constant is changed to NAME_BYTE_LEN for database name buffer USERNAME_LENGTH constant is changed to USERNAME_BYTE_LENGTH for user name buffer sql/sp_head.cc: NAME_LEN constant is changed to NAME_BYTE_LEN for database name buffer USERNAME_LENGTH constant is changed to USERNAME_BYTE_LENGTH for user name buffer sql/sql_acl.cc: NAME_LEN constant is changed to NAME_BYTE_LEN for database name buffer USERNAME_LENGTH constant is changed to USERNAME_BYTE_LENGTH for user name buffer sql/sql_class.h: NAME_LEN constant is changed to NAME_BYTE_LEN for database name buffer sql/sql_parse.cc: NAME_LEN constant is changed to NAME_BYTE_LEN for database name buffer Function check_string_length() is fixed, now it check string lenght in symbols sql/sql_repl.h: NAME_LEN constant is changed to NAME_BYTE_LEN for database name buffer USERNAME_LENGTH constant is changed to USERNAME_BYTE_LENGTH for user name buffer
-rw-r--r--include/mysql_com.h2
-rw-r--r--mysql-test/r/ctype_utf8.result17
-rw-r--r--mysql-test/t/ctype_utf8.test1
-rw-r--r--sql/sp.cc8
-rw-r--r--sql/sp_head.cc6
-rw-r--r--sql/sql_acl.cc10
-rw-r--r--sql/sql_class.h2
-rw-r--r--sql/sql_parse.cc7
-rw-r--r--sql/sql_repl.h2
9 files changed, 30 insertions, 25 deletions
diff --git a/include/mysql_com.h b/include/mysql_com.h
index eb534cd034d..b1dd6152cf4 100644
--- a/include/mysql_com.h
+++ b/include/mysql_com.h
@@ -36,7 +36,7 @@
MySQL standard format:
user_name_part@host_name_part\0
*/
-#define USER_HOST_BUFF_SIZE HOSTNAME_LENGTH + USERNAME_LENGTH + 2
+#define USER_HOST_BUFF_SIZE HOSTNAME_LENGTH + USERNAME_BYTE_LENGTH + 2
#define LOCAL_HOST "localhost"
#define LOCAL_HOST_NAMEDPIPE "."
diff --git a/mysql-test/r/ctype_utf8.result b/mysql-test/r/ctype_utf8.result
index f7baa8b98e5..51f361349e6 100644
--- a/mysql-test/r/ctype_utf8.result
+++ b/mysql-test/r/ctype_utf8.result
@@ -1341,17 +1341,18 @@ a
e
drop table t1;
set names utf8;
-grant select on test.* to ム<8e>ミキミオム<80>_ム<8e>ミキミオム<80>@localhost;
+grant select on test.* to ム社キミオム_ム社キミオム@localhost;
user()
-ム<8e>ミキミオム<80>_ム<8e>ミキミオム<80>@localhost
-revoke all on test.* from ム<8e>ミキミオム<80>_ム<8e>ミキミオム<80>@localhost;
-drop user ム<8e>ミキミオム<80>_ム<8e>ミキミオム<80>@localhost;
-create database ミクミシム<8f>_ミアミーミキム<8b>_ミイ_ミコミセミエミクム<80>ミセミイミコミオ_ム<83>ム<82>ム<84>8_ミエミサミクミスミセミケ_ミアミセミサム<8c>ム<88>ミオ_ム<87>ミオミシ_45;
-use ミクミシム<8f>_ミアミーミキム<8b>_ミイ_ミコミセミエミクム<80>ミセミイミコミオ_ム<83>ム<82>ム<84>8_ミエミサミクミスミセミケ_ミアミセミサム<8c>ム<88>ミオ_ム<87>ミオミシ_45;
+ム社キミオム_ム社キミオム@localhost
+revoke all on test.* from ム社キミオム_ム社キミオム@localhost;
+drop user ム社キミオム_ム社キミオム@localhost;
+create database ミクミシム柔ミアミーミキム祇ミイ_ミコミセミエミクムミセミイミコミオ_ムτび8_ミエミサミクミスミセミケ_ミアミセミサム袴威オ_ムミオミシ_45;
+use ミクミシム柔ミアミーミキム祇ミイ_ミコミセミエミクムミセミイミコミオ_ムτび8_ミエミサミクミスミセミケ_ミアミセミサム袴威オ_ムミオミシ_45;
select database();
database()
-ミクミシム<8f>_ミアミーミキム<8b>_ミイ_ミコミセミエミクム<80>ミセミイミコミオ_ム<83>ム<82>ム<84>8_ミエミサミクミスミセミケ_ミアミセミサム<8c>ム<88>ミオ_ム<87>ミオミシ_45
-drop database ミクミシム<8f>_ミアミーミキム<8b>_ミイ_ミコミセミエミクム<80>ミセミイミコミオ_ム<83>ム<82>ム<84>8_ミエミサミクミスミセミケ_ミアミセミサム<8c>ム<88>ミオ_ム<87>ミオミシ_45;
+ミクミシム柔ミアミーミキム祇ミイ_ミコミセミエミクムミセミイミコミオ_ムτび8_ミエミサミクミスミセミケ_ミアミセミサム袴威オ_ムミオミシ_45
+drop database ミクミシム柔ミアミーミキム祇ミイ_ミコミセミエミクムミセミイミコミオ_ムτび8_ミエミサミクミスミセミケ_ミアミセミサム袴威オ_ムミオミシ_45;
+use test;
CREATE TABLE t1(id varchar(20) NOT NULL) DEFAULT CHARSET=utf8;
INSERT INTO t1 VALUES ('xxx'), ('aa'), ('yyy'), ('aa');
SELECT id FROM t1;
diff --git a/mysql-test/t/ctype_utf8.test b/mysql-test/t/ctype_utf8.test
index e6f939abdcd..b6137d5f084 100644
--- a/mysql-test/t/ctype_utf8.test
+++ b/mysql-test/t/ctype_utf8.test
@@ -1084,6 +1084,7 @@ create database ミクミシム柔ミアミーミキム祇ミイ_ミコミセミエミクムミセミイミコミオ_ムτび8_ミエミサミクミスミセミケ_ミアミセミ
use ミクミシム柔ミアミーミキム祇ミイ_ミコミセミエミクムミセミイミコミオ_ムτび8_ミエミサミクミスミセミケ_ミアミセミサム袴威オ_ムミオミシ_45;
select database();
drop database ミクミシム柔ミアミーミキム祇ミイ_ミコミセミエミクムミセミイミコミオ_ムτび8_ミエミサミクミスミセミケ_ミアミセミサム袴威オ_ムミオミシ_45;
+use test;
# End of 4.1 tests
diff --git a/sql/sp.cc b/sql/sp.cc
index fc72822c15e..63175b110fa 100644
--- a/sql/sp.cc
+++ b/sql/sp.cc
@@ -404,16 +404,16 @@ db_load_routine(THD *thd, int type, sp_name *name, sp_head **sphp,
{
LEX *old_lex= thd->lex, newlex;
String defstr;
- char old_db_buf[NAME_LEN+1];
+ char old_db_buf[NAME_BYTE_LEN+1];
LEX_STRING old_db= { old_db_buf, sizeof(old_db_buf) };
bool dbchanged;
ulong old_sql_mode= thd->variables.sql_mode;
ha_rows old_select_limit= thd->variables.select_limit;
sp_rcontext *old_spcont= thd->spcont;
- char definer_user_name_holder[USERNAME_LENGTH + 1];
+ char definer_user_name_holder[USERNAME_BYTE_LENGTH + 1];
LEX_STRING_WITH_INIT definer_user_name(definer_user_name_holder,
- USERNAME_LENGTH);
+ USERNAME_BYTE_LENGTH);
char definer_host_name_holder[HOSTNAME_LENGTH + 1];
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;
TABLE *table;
char definer[USER_HOST_BUFF_SIZE];
- char old_db_buf[NAME_LEN+1];
+ char old_db_buf[NAME_BYTE_LEN+1];
LEX_STRING old_db= { old_db_buf, sizeof(old_db_buf) };
bool dbchanged;
DBUG_ENTER("db_create_routine");
diff --git a/sql/sp_head.cc b/sql/sp_head.cc
index 9761de625be..e5b0b1e606e 100644
--- a/sql/sp_head.cc
+++ b/sql/sp_head.cc
@@ -924,7 +924,7 @@ bool
sp_head::execute(THD *thd)
{
DBUG_ENTER("sp_head::execute");
- char old_db_buf[NAME_LEN+1];
+ char old_db_buf[NAME_BYTE_LEN+1];
LEX_STRING old_db= { old_db_buf, sizeof(old_db_buf) };
bool dbchanged;
sp_rcontext *ctx;
@@ -1957,8 +1957,8 @@ sp_head::set_info(longlong created, longlong modified,
void
sp_head::set_definer(const char *definer, uint definerlen)
{
- char user_name_holder[USERNAME_LENGTH + 1];
- LEX_STRING_WITH_INIT user_name(user_name_holder, USERNAME_LENGTH);
+ char user_name_holder[USERNAME_BYTE_LENGTH + 1];
+ LEX_STRING_WITH_INIT user_name(user_name_holder, USERNAME_BYTE_LENGTH);
char host_name_holder[HOSTNAME_LENGTH + 1];
LEX_STRING_WITH_INIT host_name(host_name_holder, HOSTNAME_LENGTH);
diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc
index e97985fbd45..010a5c33b96 100644
--- a/sql/sql_acl.cc
+++ b/sql/sql_acl.cc
@@ -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 ACL_KEY_LENGTH (IP_ADDR_STRLEN+1+NAME_LEN+1+USERNAME_LENGTH+1)
+#define ACL_KEY_LENGTH (IP_ADDR_STRLEN+1+NAME_BYTE_LEN+1+USERNAME_BYTE_LENGTH+1)
static DYNAMIC_ARRAY acl_hosts,acl_users,acl_dbs;
static MEM_ROOT mem, memex;
@@ -197,7 +197,7 @@ static my_bool acl_load(THD *thd, TABLE_LIST *tables)
READ_RECORD read_record_info;
my_bool return_val= 1;
bool check_no_resolve= specialflag & SPECIAL_NO_RESOLVE;
- char tmp_name[NAME_LEN+1];
+ char tmp_name[NAME_BYTE_LEN+1];
int password_length;
DBUG_ENTER("acl_load");
@@ -2264,7 +2264,7 @@ static GRANT_NAME *name_hash_search(HASH *name_hash,
const char *user, const char *tname,
bool exact)
{
- char helping [NAME_LEN*2+USERNAME_LENGTH+3];
+ char helping [NAME_BYTE_LEN*2+USERNAME_BYTE_LENGTH+3];
uint len;
GRANT_NAME *grant_name,*found=0;
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);
LEX_USER *Str, *tmp_Str;
- char tmp_db[NAME_LEN+1];
+ char tmp_db[NAME_BYTE_LEN+1];
bool create_new_users=0;
TABLE_LIST tables[2];
DBUG_ENTER("mysql_grant");
@@ -3867,7 +3867,7 @@ err2:
bool check_grant_db(THD *thd,const char *db)
{
Security_context *sctx= thd->security_ctx;
- char helping [NAME_LEN+USERNAME_LENGTH+2];
+ char helping [NAME_BYTE_LEN+USERNAME_BYTE_LENGTH+2];
uint len;
bool error= 1;
diff --git a/sql/sql_class.h b/sql/sql_class.h
index 039c133e885..ed9f4b57f56 100644
--- a/sql/sql_class.h
+++ b/sql/sql_class.h
@@ -200,7 +200,7 @@ class MYSQL_LOG: public TC_LOG
IO_CACHE log_file;
IO_CACHE index_file;
char *name;
- char time_buff[20],db[NAME_LEN+1];
+ char time_buff[20],db[NAME_BYTE_LEN+1];
char log_file_name[FN_REFLEN],index_file_name[FN_REFLEN];
/*
The max size before rotation (usable only if log_type == LOG_BIN: binary
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index bb969a77d89..a88eac84865 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -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
terminated, so also '\0' for empty string).
*/
- char db_buff[NAME_LEN+1]; // buffer to store db in utf8
+ char db_buff[NAME_BYTE_LEN+1]; // buffer to store db in utf8
char *db= passwd;
uint passwd_len= thd->client_capabilities & CLIENT_SECURE_CONNECTION ?
*passwd++ : strlen(passwd);
@@ -7564,7 +7564,10 @@ LEX_USER *get_current_user(THD *thd, LEX_USER *user)
bool check_string_length(LEX_STRING *str, const char *err_msg,
uint max_length)
{
- if (str->length <= max_length)
+
+ if (system_charset_info->cset->charpos(system_charset_info, str->str,
+ str->str + str->length, max_length) >=
+ str->length)
return FALSE;
my_error(ER_WRONG_STRING_LENGTH, MYF(0), str->str, err_msg, max_length);
diff --git a/sql/sql_repl.h b/sql/sql_repl.h
index 9eb6456ee20..6b1e5e6b447 100644
--- a/sql/sql_repl.h
+++ b/sql/sql_repl.h
@@ -22,7 +22,7 @@ typedef struct st_slave_info
uint32 server_id;
uint32 rpl_recovery_rank, master_id;
char host[HOSTNAME_LENGTH+1];
- char user[USERNAME_LENGTH+1];
+ char user[USERNAME_BYTE_LENGTH+1];
char password[MAX_PASSWORD_LENGTH+1];
uint16 port;
THD* thd;