Bug #41057: mysql_update fails FATAL ERROR: Failed to create temporary file for defaults

mysql_upgrade was passing an non-initialized non-null tmpdir to create_temp_file() if no 
--tmpdir was specified. This prevents create_temp_file() from taking the system 
temporary file path and as a result mysql_upgrade was trying to open a file in a 
directory that it may not have write access to.
Fixed by making sure mysql_upgrade will pass a zero length temp dir string to 
create_temp_file() if no --tmpdir is specified.
This commit is contained in:
Georgi Kodinov 2010-03-09 11:18:46 +02:00
parent d0bb5465b8
commit df8642b212

View file

@ -44,7 +44,7 @@ static DYNAMIC_STRING conn_args;
static char *opt_password= 0;
static my_bool tty_password= 0;
static char opt_tmpdir[FN_REFLEN];
static char opt_tmpdir[FN_REFLEN] = "";
#ifndef DBUG_OFF
static char *default_dbug_option= (char*) "d:t:O,/tmp/mysql_upgrade.trace";
@ -459,7 +459,8 @@ static int run_query(const char *query, DYNAMIC_STRING *ds_res,
DBUG_ENTER("run_query");
DBUG_PRINT("enter", ("query: %s", query));
if ((fd= create_temp_file(query_file_path, opt_tmpdir,
if ((fd= create_temp_file(query_file_path,
opt_tmpdir[0] ? opt_tmpdir : NULL,
"sql", O_CREAT | O_SHARE | O_RDWR,
MYF(MY_WME))) < 0)
die("Failed to create temporary file for defaults");