Commit 98a7bbe1 authored by msvensson@neptunus.(none)'s avatar msvensson@neptunus.(none)

Merge bk-internal:/home/bk/mysql-5.0

into  neptunus.(none):/home/msvensson/mysql/mysql-5.0
parents 46ee4ea0 9c0b7459
...@@ -3230,8 +3230,7 @@ sub ddd_arguments { ...@@ -3230,8 +3230,7 @@ sub ddd_arguments {
"break mysql_parse\n" . "break mysql_parse\n" .
"commands 1\n" . "commands 1\n" .
"disable 1\n" . "disable 1\n" .
"end\n" . "end");
"run");
} }
if ( $opt_manual_ddd ) if ( $opt_manual_ddd )
......
...@@ -28,3 +28,4 @@ select * from t1 ignore index (primary) where tt like 'AA%'; ...@@ -28,3 +28,4 @@ select * from t1 ignore index (primary) where tt like 'AA%';
id tt id tt
select * from t1 where tt like '%AA%'; select * from t1 where tt like '%AA%';
id tt id tt
drop table t1;
...@@ -356,3 +356,17 @@ insert into mysql.user select * from t1; ...@@ -356,3 +356,17 @@ insert into mysql.user select * from t1;
drop table t1, t2; drop table t1, t2;
drop database TESTDB; drop database TESTDB;
flush privileges; flush privileges;
grant all privileges on test.* to `a@`@localhost;
grant execute on * to `a@`@localhost;
create table t2 (s1 int);
insert into t2 values (1);
drop function if exists f2;
create function f2 () returns int begin declare v int; select s1 from t2
into v; return v; end//
select f2();
f2()
1
drop function f2;
drop table t2;
REVOKE ALL PRIVILEGES, GRANT OPTION FROM `a@`@localhost;
drop user `a@`@localhost;
...@@ -38,7 +38,6 @@ f1 ...@@ -38,7 +38,6 @@ f1
5 5
delete from t1; delete from t1;
ERROR 42000: DELETE command denied to user 'ssl_user4'@'localhost' for table 't1' ERROR 42000: DELETE command denied to user 'ssl_user4'@'localhost' for table 't1'
delete from mysql.user where user='ssl_user%'; drop user ssl_user1@localhost, ssl_user2@localhost,
delete from mysql.db where user='ssl_user%'; ssl_user3@localhost, ssl_user4@localhost;
flush privileges;
drop table t1; drop table t1;
...@@ -24,7 +24,8 @@ Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File ...@@ -24,7 +24,8 @@ Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File
stop slave; stop slave;
change master to master_user='root',master_password='', master_ssl=0; change master to master_user='root',master_password='', master_ssl=0;
start slave; start slave;
drop user replssl@localhost;
drop table t1; drop table t1;
show slave status; show slave status;
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 474 # # master-bin.000001 Yes Yes 0 0 474 # None 0 No MYSQL_TEST_DIR/std_data/cacert.pem MYSQL_TEST_DIR/std_data/client-cert.pem MYSQL_TEST_DIR/std_data/client-key.pem # # 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 564 # # master-bin.000001 Yes Yes 0 0 564 # None 0 No MYSQL_TEST_DIR/std_data/cacert.pem MYSQL_TEST_DIR/std_data/client-cert.pem MYSQL_TEST_DIR/std_data/client-key.pem #
...@@ -322,6 +322,7 @@ Warnings: ...@@ -322,6 +322,7 @@ Warnings:
Warning 1287 'SHOW INNODB STATUS' is deprecated; use 'SHOW ENGINE INNODB STATUS' instead Warning 1287 'SHOW INNODB STATUS' is deprecated; use 'SHOW ENGINE INNODB STATUS' instead
GRANT EXECUTE ON PROCEDURE p1 TO user_bug7787@localhost; GRANT EXECUTE ON PROCEDURE p1 TO user_bug7787@localhost;
DROP DATABASE db_bug7787; DROP DATABASE db_bug7787;
drop user user_bug7787@localhost;
use test; use test;
---> connection: root ---> connection: root
......
...@@ -204,3 +204,4 @@ drop procedure bug10100pv| ...@@ -204,3 +204,4 @@ drop procedure bug10100pv|
drop procedure bug10100pd| drop procedure bug10100pd|
drop procedure bug10100pc| drop procedure bug10100pc|
drop view v1| drop view v1|
drop table t3|
...@@ -949,7 +949,7 @@ insert into t1 values ...@@ -949,7 +949,7 @@ insert into t1 values
create function f2() returns int return (select max(b) from t2); create function f2() returns int return (select max(b) from t2);
insert into t2 select a, f2() from t1; insert into t2 select a, f2() from t1;
load data infile '../std_data_ln/words.dat' into table t1 (a) set b:= f1(); load data infile '../std_data_ln/words.dat' into table t1 (a) set b:= f1();
drop tables t1, t2; drop table t1, t2;
drop function f1; drop function f1;
drop function f2; drop function f2;
create table t1(i int not null, j int not null, n numeric(15,2), primary key(i,j)); create table t1(i int not null, j int not null, n numeric(15,2), primary key(i,j));
......
...@@ -28,3 +28,5 @@ select * from t1 ignore index (primary) where tt like 'AA%'; ...@@ -28,3 +28,5 @@ select * from t1 ignore index (primary) where tt like 'AA%';
select * from t1 where tt like '%AA%'; select * from t1 where tt like '%AA%';
# End of 4.1 tests # End of 4.1 tests
drop table t1;
...@@ -465,3 +465,29 @@ drop table t1, t2; ...@@ -465,3 +465,29 @@ drop table t1, t2;
drop database TESTDB; drop database TESTDB;
flush privileges; flush privileges;
#
# BUG#13310 incorrect user parsing by SP
#
grant all privileges on test.* to `a@`@localhost;
grant execute on * to `a@`@localhost;
connect (bug13310,localhost,'a@',,test);
connection bug13310;
create table t2 (s1 int);
insert into t2 values (1);
--disable_warnings
drop function if exists f2;
--enable_warnings
delimiter //;
create function f2 () returns int begin declare v int; select s1 from t2
into v; return v; end//
delimiter ;//
select f2();
drop function f2;
drop table t2;
disconnect bug13310;
connection default;
REVOKE ALL PRIVILEGES, GRANT OPTION FROM `a@`@localhost;
drop user `a@`@localhost;
...@@ -48,9 +48,9 @@ select * from t1; ...@@ -48,9 +48,9 @@ select * from t1;
delete from t1; delete from t1;
connection default; connection default;
delete from mysql.user where user='ssl_user%'; drop user ssl_user1@localhost, ssl_user2@localhost,
delete from mysql.db where user='ssl_user%'; ssl_user3@localhost, ssl_user4@localhost;
flush privileges;
drop table t1; drop table t1;
# End of 4.1 tests # End of 4.1 tests
...@@ -53,6 +53,7 @@ stop slave; ...@@ -53,6 +53,7 @@ stop slave;
change master to master_user='root',master_password='', master_ssl=0; change master to master_user='root',master_password='', master_ssl=0;
start slave; start slave;
connection master; connection master;
drop user replssl@localhost;
drop table t1; drop table t1;
save_master_pos; save_master_pos;
connection slave; connection slave;
......
...@@ -545,6 +545,7 @@ GRANT EXECUTE ON PROCEDURE p1 TO user_bug7787@localhost; ...@@ -545,6 +545,7 @@ GRANT EXECUTE ON PROCEDURE p1 TO user_bug7787@localhost;
# Cleanup. # Cleanup.
DROP DATABASE db_bug7787; DROP DATABASE db_bug7787;
drop user user_bug7787@localhost;
use test; use test;
......
...@@ -258,5 +258,6 @@ drop procedure bug10100pv| ...@@ -258,5 +258,6 @@ drop procedure bug10100pv|
drop procedure bug10100pd| drop procedure bug10100pd|
drop procedure bug10100pc| drop procedure bug10100pc|
drop view v1| drop view v1|
drop table t3|
delimiter ;| delimiter ;|
...@@ -1111,7 +1111,7 @@ insert into t1 values ...@@ -1111,7 +1111,7 @@ insert into t1 values
create function f2() returns int return (select max(b) from t2); create function f2() returns int return (select max(b) from t2);
insert into t2 select a, f2() from t1; insert into t2 select a, f2() from t1;
load data infile '../std_data_ln/words.dat' into table t1 (a) set b:= f1(); load data infile '../std_data_ln/words.dat' into table t1 (a) set b:= f1();
drop tables t1, t2; drop table t1, t2;
drop function f1; drop function f1;
drop function f2; drop function f2;
......
...@@ -992,6 +992,7 @@ static int check_connection(THD *thd) ...@@ -992,6 +992,7 @@ static int check_connection(THD *thd)
char *user= end; char *user= end;
char *passwd= strend(user)+1; char *passwd= strend(user)+1;
uint user_len= passwd - user - 1;
char *db= passwd; char *db= passwd;
char db_buff[NAME_LEN+1]; // buffer to store db in utf8 char db_buff[NAME_LEN+1]; // buffer to store db in utf8
char user_buff[USERNAME_LENGTH+1]; // buffer to store user in utf8 char user_buff[USERNAME_LENGTH+1]; // buffer to store user in utf8
...@@ -1024,11 +1025,19 @@ static int check_connection(THD *thd) ...@@ -1024,11 +1025,19 @@ static int check_connection(THD *thd)
db= db_buff; db= db_buff;
} }
user_buff[copy_and_convert(user_buff, sizeof(user_buff)-1, user_buff[user_len= copy_and_convert(user_buff, sizeof(user_buff)-1,
system_charset_info, user, strlen(user), system_charset_info, user, user_len,
thd->charset(), &dummy_errors)]= '\0'; thd->charset(), &dummy_errors)]= '\0';
user= user_buff; user= user_buff;
/* If username starts and ends in "'", chop them off */
if (user_len > 1 && user[0] == '\'' && user[user_len - 1] == '\'')
{
user[user_len-1]= 0;
user++;
user_len-= 2;
}
if (thd->main_security_ctx.user) if (thd->main_security_ctx.user)
x_free(thd->main_security_ctx.user); x_free(thd->main_security_ctx.user);
if (!(thd->main_security_ctx.user= my_strdup(user, MYF(0)))) if (!(thd->main_security_ctx.user= my_strdup(user, MYF(0))))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment