MDEV-5543 MyISAM repair unsafe usage of TMD files
This commit is contained in:
parent
1555f1801d
commit
283af34a6d
14
mysql-test/r/repair_symlink-5543.result
Normal file
14
mysql-test/r/repair_symlink-5543.result
Normal file
@ -0,0 +1,14 @@
|
||||
create table t1 (a int) engine=myisam data directory='MYSQL_TMP_DIR';
|
||||
insert t1 values (1);
|
||||
repair table t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 repair error Can't create new tempfile: 'MYSQL_TMP_DIR/t1.TMD'
|
||||
test.t1 repair status Operation failed
|
||||
drop table t1;
|
||||
create table t2 (a int) engine=aria data directory='MYSQL_TMP_DIR';
|
||||
insert t2 values (1);
|
||||
repair table t2;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t2 repair error Can't create new tempfile: 'MYSQL_TMP_DIR/t2.TMD'
|
||||
test.t2 repair status Operation failed
|
||||
drop table t2;
|
26
mysql-test/t/repair_symlink-5543.test
Normal file
26
mysql-test/t/repair_symlink-5543.test
Normal file
@ -0,0 +1,26 @@
|
||||
#
|
||||
# MDEV-5543 MyISAM repair unsafe usage of TMD files
|
||||
#
|
||||
--source include/have_symlink.inc
|
||||
--source include/not_windows.inc
|
||||
--source include/have_maria.inc
|
||||
|
||||
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
|
||||
eval create table t1 (a int) engine=myisam data directory='$MYSQL_TMP_DIR';
|
||||
insert t1 values (1);
|
||||
--system ln -s $MYSQL_TMP_DIR/foobar5543 $MYSQL_TMP_DIR/t1.TMD
|
||||
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
|
||||
repair table t1;
|
||||
drop table t1;
|
||||
|
||||
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
|
||||
eval create table t2 (a int) engine=aria data directory='$MYSQL_TMP_DIR';
|
||||
insert t2 values (1);
|
||||
--system ln -s $MYSQL_TMP_DIR/foobar5543 $MYSQL_TMP_DIR/t2.TMD
|
||||
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
|
||||
repair table t2;
|
||||
drop table t2;
|
||||
|
||||
--list_files $MYSQL_TMP_DIR foobar5543
|
||||
--system rm $MYSQL_TMP_DIR/t1.TMD $MYSQL_TMP_DIR/t2.TMD
|
||||
|
@ -1,5 +1,6 @@
|
||||
/* Copyright (C) 2004-2008 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
|
||||
Copyright (C) 2008-2009 Sun Microsystems, Inc.
|
||||
Copyright (c) 2009, 2014, SkySQL Ab.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -1467,7 +1468,7 @@ int ha_maria::repair(THD *thd, HA_CHECK *param, bool do_optimize)
|
||||
|
||||
param->db_name= table->s->db.str;
|
||||
param->table_name= table->alias;
|
||||
param->tmpfile_createflag= O_RDWR | O_TRUNC;
|
||||
param->tmpfile_createflag= O_RDWR | O_TRUNC | O_EXCL;
|
||||
param->using_global_keycache= 1;
|
||||
param->thd= thd;
|
||||
param->tmpdir= &mysql_tmpdir_list;
|
||||
|
@ -1,5 +1,6 @@
|
||||
/*
|
||||
Copyright (c) 2000, 2011, Oracle and/or its affiliates
|
||||
Copyright (c) 2009, 2014, SkySQL Ab.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -1138,7 +1139,7 @@ int ha_myisam::repair(THD *thd, HA_CHECK ¶m, bool do_optimize)
|
||||
|
||||
param.db_name= table->s->db.str;
|
||||
param.table_name= table->alias;
|
||||
param.tmpfile_createflag = O_RDWR | O_TRUNC;
|
||||
param.tmpfile_createflag= O_RDWR | O_TRUNC | O_EXCL;
|
||||
param.using_global_keycache = 1;
|
||||
param.thd= thd;
|
||||
param.tmpdir= &mysql_tmpdir_list;
|
||||
|
Loading…
x
Reference in New Issue
Block a user