Merge mysql.com:/home/svoj/devel/bk/mysql-4.1-engines
into mysql.com:/home/svoj/devel/mysql/BUG31277/mysql-4.1-engines
This commit is contained in:
commit
107822cf87
@ -90,6 +90,12 @@ t1 CREATE TABLE `t1` (
|
|||||||
`b` int(11) default NULL
|
`b` int(11) default NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
CREATE TABLE t1(a INT)
|
||||||
|
DATA DIRECTORY='TEST_DIR/master-data/mysql'
|
||||||
|
INDEX DIRECTORY='TEST_DIR/master-data/mysql';
|
||||||
|
RENAME TABLE t1 TO user;
|
||||||
|
ERROR HY000: Can't create/write to file 'TEST_DIR/master-data/mysql/user.MYI' (Errcode: 17)
|
||||||
|
DROP TABLE t1;
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
|
@ -118,6 +118,18 @@ enable_query_log;
|
|||||||
show create table t1;
|
show create table t1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# BUG#32111 - Security Breach via DATA/INDEX DIRECORY and RENAME TABLE
|
||||||
|
#
|
||||||
|
--replace_result $MYSQLTEST_VARDIR TEST_DIR
|
||||||
|
eval CREATE TABLE t1(a INT)
|
||||||
|
DATA DIRECTORY='$MYSQLTEST_VARDIR/master-data/mysql'
|
||||||
|
INDEX DIRECTORY='$MYSQLTEST_VARDIR/master-data/mysql';
|
||||||
|
--replace_result $MYSQLTEST_VARDIR TEST_DIR
|
||||||
|
--error 1
|
||||||
|
RENAME TABLE t1 TO user;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
#
|
#
|
||||||
# Test specifying DATA DIRECTORY that is the same as what would normally
|
# Test specifying DATA DIRECTORY that is the same as what would normally
|
||||||
# have been chosen. (Bug #8707)
|
# have been chosen. (Bug #8707)
|
||||||
|
@ -125,6 +125,7 @@ int my_rename_with_symlink(const char *from, const char *to, myf MyFlags)
|
|||||||
int was_symlink= (!my_disable_symlinks &&
|
int was_symlink= (!my_disable_symlinks &&
|
||||||
!my_readlink(link_name, from, MYF(0)));
|
!my_readlink(link_name, from, MYF(0)));
|
||||||
int result=0;
|
int result=0;
|
||||||
|
int name_is_different;
|
||||||
DBUG_ENTER("my_rename_with_symlink");
|
DBUG_ENTER("my_rename_with_symlink");
|
||||||
|
|
||||||
if (!was_symlink)
|
if (!was_symlink)
|
||||||
@ -133,6 +134,14 @@ int my_rename_with_symlink(const char *from, const char *to, myf MyFlags)
|
|||||||
/* Change filename that symlink pointed to */
|
/* Change filename that symlink pointed to */
|
||||||
strmov(tmp_name, to);
|
strmov(tmp_name, to);
|
||||||
fn_same(tmp_name,link_name,1); /* Copy dir */
|
fn_same(tmp_name,link_name,1); /* Copy dir */
|
||||||
|
name_is_different= strcmp(link_name, tmp_name);
|
||||||
|
if (name_is_different && !access(tmp_name, F_OK))
|
||||||
|
{
|
||||||
|
my_errno= EEXIST;
|
||||||
|
if (MyFlags & MY_WME)
|
||||||
|
my_error(EE_CANTCREATEFILE, MYF(0), tmp_name, EEXIST);
|
||||||
|
DBUG_RETURN(1);
|
||||||
|
}
|
||||||
|
|
||||||
/* Create new symlink */
|
/* Create new symlink */
|
||||||
if (my_symlink(tmp_name, to, MyFlags))
|
if (my_symlink(tmp_name, to, MyFlags))
|
||||||
@ -144,7 +153,7 @@ int my_rename_with_symlink(const char *from, const char *to, myf MyFlags)
|
|||||||
the same basename and different directories.
|
the same basename and different directories.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (strcmp(link_name, tmp_name) && my_rename(link_name, tmp_name, MyFlags))
|
if (name_is_different && my_rename(link_name, tmp_name, MyFlags))
|
||||||
{
|
{
|
||||||
int save_errno=my_errno;
|
int save_errno=my_errno;
|
||||||
my_delete(to, MyFlags); /* Remove created symlink */
|
my_delete(to, MyFlags); /* Remove created symlink */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user