summaryrefslogtreecommitdiff
path: root/sql/sql_db.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/sql_db.cc')
-rw-r--r--sql/sql_db.cc14
1 files changed, 12 insertions, 2 deletions
diff --git a/sql/sql_db.cc b/sql/sql_db.cc
index ce92fa7ff90..300a2a455a4 100644
--- a/sql/sql_db.cc
+++ b/sql/sql_db.cc
@@ -461,7 +461,7 @@ static long mysql_rm_known_files(THD *thd, MY_DIR *dirp, const char *db,
tot_list_next= &tot_list;
- for (uint idx=2 ;
+ for (uint idx=0 ;
idx < (uint) dirp->number_off_files && !thd->killed ;
idx++)
{
@@ -469,6 +469,11 @@ static long mysql_rm_known_files(THD *thd, MY_DIR *dirp, const char *db,
char *extension;
DBUG_PRINT("info",("Examining: %s", file->name));
+ /* skiping . and .. */
+ if (file->name[0] == '.' && (!file->name[1] ||
+ (file->name[1] == '.' && !file->name[2])))
+ continue;
+
/* Check if file is a raid directory */
if ((my_isdigit(&my_charset_latin1, file->name[0]) ||
(file->name[0] >= 'a' && file->name[0] <= 'f')) &&
@@ -550,7 +555,12 @@ static long mysql_rm_known_files(THD *thd, MY_DIR *dirp, const char *db,
If the directory is a symbolic link, remove the link first, then
remove the directory the symbolic link pointed at
*/
- if (!found_other_files)
+ if (found_other_files)
+ {
+ my_error(ER_DB_DROP_RMDIR, MYF(0), org_path, EEXIST);
+ DBUG_RETURN(-1);
+ }
+ else
{
char tmp_path[FN_REFLEN], *pos;
char *path= tmp_path;