Loading mysys/mf_format.c +1 −1 Original line number Diff line number Diff line Loading @@ -42,7 +42,7 @@ my_string fn_format(my_string to, const char *name, const char *dir, /* Use given directory */ convert_dirname(dev,dir,NullS); /* Fix to this OS */ } else if ((flag & MY_RELATIVE_PATH) && !test_if_hard_path(name)) else if ((flag & MY_RELATIVE_PATH) && !test_if_hard_path(dev)) { /* Put 'dir' before the given path */ strmake(buff,dev,sizeof(buff)-1); Loading sql/item_strfunc.cc +11 −3 Original line number Diff line number Diff line Loading @@ -2412,14 +2412,22 @@ String *Item_load_file::val_str(String *str) String *file_name; File file; MY_STAT stat_info; char path[FN_REFLEN]; DBUG_ENTER("load_file"); if (!(file_name= args[0]->val_str(str)) || if (!(file_name= args[0]->val_str(str)) #ifndef NO_EMBEDDED_ACCESS_CHECKS !(current_thd->master_access & FILE_ACL) || || !(current_thd->master_access & FILE_ACL) #endif !my_stat(file_name->c_ptr(), &stat_info, MYF(MY_WME))) ) goto err; (void) fn_format(path, file_name->c_ptr(), mysql_real_data_home, "", MY_RELATIVE_PATH | MY_UNPACK_FILENAME); if (!my_stat(path, &stat_info, MYF(MY_WME))) goto err; if (!(stat_info.st_mode & S_IROTH)) { /* my_error(ER_TEXTFILE_NOT_READABLE, MYF(0), file_name->c_ptr()); */ Loading sql/sql_class.cc +8 −3 Original line number Diff line number Diff line Loading @@ -892,9 +892,14 @@ static File create_file(THD *thd, char *path, sql_exchange *exchange, option|= MY_REPLACE_DIR; // Force use of db directory #endif strxnmov(path, FN_REFLEN, mysql_real_data_home, thd->db ? thd->db : "", NullS); if (!dirname_length(exchange->file_name)) { strxnmov(path, FN_REFLEN, mysql_real_data_home, thd->db ? thd->db : "", NullS); (void) fn_format(path, exchange->file_name, path, "", option); } else (void) fn_format(path, exchange->file_name, mysql_real_data_home, "", option); if (!access(path, F_OK)) { my_error(ER_FILE_EXISTS_ERROR, MYF(0), exchange->file_name); Loading sql/sql_load.cc +6 −7 Original line number Diff line number Diff line Loading @@ -179,17 +179,16 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list, #ifdef DONT_ALLOW_FULL_LOAD_DATA_PATHS ex->file_name+=dirname_length(ex->file_name); #endif if (!dirname_length(ex->file_name) && strlen(ex->file_name)+strlen(mysql_real_data_home)+strlen(tdb)+3 < FN_REFLEN) if (!dirname_length(ex->file_name)) { (void) sprintf(name,"%s%s/%s",mysql_real_data_home,tdb,ex->file_name); unpack_filename(name,name); /* Convert to system format */ strxnmov(name, FN_REFLEN, mysql_real_data_home, tdb, NullS); (void) fn_format(name, ex->file_name, name, "", MY_RELATIVE_PATH | MY_UNPACK_FILENAME); } else { my_load_path(name, ex->file_name, mysql_real_data_home); unpack_filename(name, name); (void) fn_format(name, ex->file_name, mysql_real_data_home, "", MY_RELATIVE_PATH | MY_UNPACK_FILENAME); #if !defined(__WIN__) && !defined(OS2) && ! defined(__NETWARE__) MY_STAT stat_info; if (!my_stat(name,&stat_info,MYF(MY_WME))) Loading sql/sql_table.cc +3 −1 Original line number Diff line number Diff line Loading @@ -2610,7 +2610,9 @@ int mysql_alter_table(THD *thd,char *new_db, char *new_name, } else { if (!access(fn_format(new_name_buff,new_name_buff,new_db,reg_ext,0), char dir_buff[FN_REFLEN]; strxnmov(dir_buff, FN_REFLEN, mysql_real_data_home, new_db, NullS); if (!access(fn_format(new_name_buff,new_name_buff,dir_buff,reg_ext,0), F_OK)) { /* Table will be closed in do_command() */ Loading Loading
mysys/mf_format.c +1 −1 Original line number Diff line number Diff line Loading @@ -42,7 +42,7 @@ my_string fn_format(my_string to, const char *name, const char *dir, /* Use given directory */ convert_dirname(dev,dir,NullS); /* Fix to this OS */ } else if ((flag & MY_RELATIVE_PATH) && !test_if_hard_path(name)) else if ((flag & MY_RELATIVE_PATH) && !test_if_hard_path(dev)) { /* Put 'dir' before the given path */ strmake(buff,dev,sizeof(buff)-1); Loading
sql/item_strfunc.cc +11 −3 Original line number Diff line number Diff line Loading @@ -2412,14 +2412,22 @@ String *Item_load_file::val_str(String *str) String *file_name; File file; MY_STAT stat_info; char path[FN_REFLEN]; DBUG_ENTER("load_file"); if (!(file_name= args[0]->val_str(str)) || if (!(file_name= args[0]->val_str(str)) #ifndef NO_EMBEDDED_ACCESS_CHECKS !(current_thd->master_access & FILE_ACL) || || !(current_thd->master_access & FILE_ACL) #endif !my_stat(file_name->c_ptr(), &stat_info, MYF(MY_WME))) ) goto err; (void) fn_format(path, file_name->c_ptr(), mysql_real_data_home, "", MY_RELATIVE_PATH | MY_UNPACK_FILENAME); if (!my_stat(path, &stat_info, MYF(MY_WME))) goto err; if (!(stat_info.st_mode & S_IROTH)) { /* my_error(ER_TEXTFILE_NOT_READABLE, MYF(0), file_name->c_ptr()); */ Loading
sql/sql_class.cc +8 −3 Original line number Diff line number Diff line Loading @@ -892,9 +892,14 @@ static File create_file(THD *thd, char *path, sql_exchange *exchange, option|= MY_REPLACE_DIR; // Force use of db directory #endif strxnmov(path, FN_REFLEN, mysql_real_data_home, thd->db ? thd->db : "", NullS); if (!dirname_length(exchange->file_name)) { strxnmov(path, FN_REFLEN, mysql_real_data_home, thd->db ? thd->db : "", NullS); (void) fn_format(path, exchange->file_name, path, "", option); } else (void) fn_format(path, exchange->file_name, mysql_real_data_home, "", option); if (!access(path, F_OK)) { my_error(ER_FILE_EXISTS_ERROR, MYF(0), exchange->file_name); Loading
sql/sql_load.cc +6 −7 Original line number Diff line number Diff line Loading @@ -179,17 +179,16 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list, #ifdef DONT_ALLOW_FULL_LOAD_DATA_PATHS ex->file_name+=dirname_length(ex->file_name); #endif if (!dirname_length(ex->file_name) && strlen(ex->file_name)+strlen(mysql_real_data_home)+strlen(tdb)+3 < FN_REFLEN) if (!dirname_length(ex->file_name)) { (void) sprintf(name,"%s%s/%s",mysql_real_data_home,tdb,ex->file_name); unpack_filename(name,name); /* Convert to system format */ strxnmov(name, FN_REFLEN, mysql_real_data_home, tdb, NullS); (void) fn_format(name, ex->file_name, name, "", MY_RELATIVE_PATH | MY_UNPACK_FILENAME); } else { my_load_path(name, ex->file_name, mysql_real_data_home); unpack_filename(name, name); (void) fn_format(name, ex->file_name, mysql_real_data_home, "", MY_RELATIVE_PATH | MY_UNPACK_FILENAME); #if !defined(__WIN__) && !defined(OS2) && ! defined(__NETWARE__) MY_STAT stat_info; if (!my_stat(name,&stat_info,MYF(MY_WME))) Loading
sql/sql_table.cc +3 −1 Original line number Diff line number Diff line Loading @@ -2610,7 +2610,9 @@ int mysql_alter_table(THD *thd,char *new_db, char *new_name, } else { if (!access(fn_format(new_name_buff,new_name_buff,new_db,reg_ext,0), char dir_buff[FN_REFLEN]; strxnmov(dir_buff, FN_REFLEN, mysql_real_data_home, new_db, NullS); if (!access(fn_format(new_name_buff,new_name_buff,dir_buff,reg_ext,0), F_OK)) { /* Table will be closed in do_command() */ Loading