#At file:///home/gluh/MySQL/mysql-5.1-bugteam/
2759 Sergey Glukhov 2008-10-02 [merge]
5.0->5.1 bugteam merge
modified:
mysql-test/r/create.result
mysql-test/t/create.test
sql/mysql_priv.h
sql/sql_parse.cc
sql/sql_yacc.yy
per-file messages:
mysql-test/r/create.result
automerge
mysql-test/t/create.test
automerge
sql/mysql_priv.h
manual merge
sql/sql_parse.cc
manual merge
sql/sql_yacc.yy
manual merge
=== modified file 'mysql-test/r/create.result'
--- a/mysql-test/r/create.result 2008-09-05 09:06:24 +0000
+++ b/mysql-test/r/create.result 2008-10-02 12:53:08 +0000
@@ -1559,6 +1559,8 @@ SHOW INDEX FROM t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
t1 1 c1 1 c1 A NULL NULL NULL YES BTREE
DROP TABLE t1;
+create user mysqltest_1@'test@test';
+ERROR HY000: Malformed hostname (illegal symbol: '@')
CREATE TABLE t1 (a INTEGER AUTO_INCREMENT PRIMARY KEY, b INTEGER NOT NULL);
INSERT IGNORE INTO t1 (b) VALUES (5);
CREATE TABLE IF NOT EXISTS t2 (a INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY)
=== modified file 'mysql-test/t/create.test'
--- a/mysql-test/t/create.test 2008-09-05 08:36:02 +0000
+++ b/mysql-test/t/create.test 2008-10-02 12:53:08 +0000
@@ -1175,6 +1175,11 @@ CREATE TABLE t1(c1 VARCHAR(33), KEY USIN
SHOW INDEX FROM t1;
DROP TABLE t1;
+#
+# Bug#35924 DEFINER should be stored 'quoted' in I_S
+#
+--error ER_UNKNOWN_ERROR
+create user mysqltest_1@'test@test';
#
# Bug#38821: Assert table->auto_increment_field_not_null failed in open_table()
=== modified file 'sql/mysql_priv.h'
--- a/sql/mysql_priv.h 2008-10-01 09:47:25 +0000
+++ b/sql/mysql_priv.h 2008-10-02 12:53:08 +0000
@@ -803,6 +803,7 @@ bool check_string_byte_length(LEX_STRING
bool check_string_char_length(LEX_STRING *str, const char *err_msg,
uint max_char_length, CHARSET_INFO *cs,
bool no_error);
+bool check_host_name(LEX_STRING *str);
bool parse_sql(THD *thd,
Parser_state *parser_state,
=== modified file 'sql/sql_parse.cc'
--- a/sql/sql_parse.cc 2008-09-29 13:53:40 +0000
+++ b/sql/sql_parse.cc 2008-10-02 12:53:08 +0000
@@ -7503,6 +7503,39 @@ int test_if_data_home_dir(const char *di
C_MODE_END
+/**
+ Check that host name string is valid.
+
+ @param[in] str string to be checked
+
+ @return Operation status
+ @retval FALSE host name is ok
+ @retval TRUE host name string is longer than max_length or
+ has invalid symbols
+*/
+
+bool check_host_name(LEX_STRING *str)
+{
+ const char *name= str->str;
+ const char *end= str->str + str->length;
+ if (check_string_byte_length(str, ER(ER_HOSTNAME), HOSTNAME_LENGTH))
+ return TRUE;
+
+ while (name != end)
+ {
+ if (*name == '@')
+ {
+ my_printf_error(ER_UNKNOWN_ERROR,
+ "Malformed hostname (illegal symbol: '%c')", MYF(0),
+ *name);
+ return TRUE;
+ }
+ name++;
+ }
+ return FALSE;
+}
+
+
extern int MYSQLparse(void *thd); // from sql_yacc.cc
=== modified file 'sql/sql_yacc.yy'
--- a/sql/sql_yacc.yy 2008-09-29 13:53:40 +0000
+++ b/sql/sql_yacc.yy 2008-10-02 12:53:08 +0000
@@ -11301,8 +11301,7 @@ user:
if (check_string_char_length(&$$->user, ER(ER_USERNAME),
USERNAME_CHAR_LENGTH,
system_charset_info, 0) ||
- check_string_byte_length(&$$->host, ER(ER_HOSTNAME),
- HOSTNAME_LENGTH))
+ check_host_name(&$$->host))
MYSQL_YYABORT;
}
| CURRENT_USER optional_braces
| Thread |
|---|
| • bzr commit into mysql-5.1 branch (Sergey.Glukhov:2759) | Sergey Glukhov | 2 Oct |