Commit 4a634059 authored by monty@hundin.mysql.fi's avatar monty@hundin.mysql.fi

Corrected fix for DROP DATABASE on symbolic link

parent 24b2d57f
...@@ -271,20 +271,20 @@ static long mysql_rm_known_files(THD *thd, MY_DIR *dirp, const char *org_path, ...@@ -271,20 +271,20 @@ static long mysql_rm_known_files(THD *thd, MY_DIR *dirp, const char *org_path,
*/ */
if (!found_other_files) if (!found_other_files)
{ {
char tmp_path[FN_REFLEN], lnk_path[FN_REFLEN]; char tmp_path[FN_REFLEN], *pos;
char *path=unpack_filename(tmp_path,org_path); char *path=unpack_filename(tmp_path,org_path);
#ifdef HAVE_READLINK #ifdef HAVE_READLINK
if (path[0] == FN_CURLIB) int error;
{
int length = (strxmov(lnk_path,curr_dir,path + 2, NullS) - lnk_path) - 1; /* Remove end FN_LIBCHAR as this causes problem on Linux in readlink */
path=lnk_path; pos=strend(path);
if (path[length] == FN_LIBCHAR) if (pos > path && pos[-1] == FN_LIBCHAR)
path[length]='\0'; *--pos=0;
}
int linkcount = readlink(path,filePath,sizeof(filePath)-1); if ((error=my_readlink(filePath, path, MYF(MY_WME))) < 0)
if (linkcount > 0) // If the path was a symbolic link DBUG_RETURN(-1);
if (!error)
{ {
*(filePath + linkcount) = '\0';
if (my_delete(path,MYF(!level ? MY_WME : 0))) if (my_delete(path,MYF(!level ? MY_WME : 0)))
{ {
/* Don't give errors if we can't delete 'RAID' directory */ /* Don't give errors if we can't delete 'RAID' directory */
...@@ -293,11 +293,12 @@ static long mysql_rm_known_files(THD *thd, MY_DIR *dirp, const char *org_path, ...@@ -293,11 +293,12 @@ static long mysql_rm_known_files(THD *thd, MY_DIR *dirp, const char *org_path,
send_error(&thd->net); send_error(&thd->net);
DBUG_RETURN(-1); DBUG_RETURN(-1);
} }
path=filePath; /* Delete directory symbolic link pointed at */
path= filePath;
} }
#endif #endif
/* Remove last FN_LIBCHAR to not cause a probelm on OS/2 */ /* Remove last FN_LIBCHAR to not cause a probelm on OS/2 */
char *pos=strend(path); pos=strend(path);
if (pos > path && pos[-1] == FN_LIBCHAR) if (pos > path && pos[-1] == FN_LIBCHAR)
*--pos=0; *--pos=0;
/* Don't give errors if we can't delete 'RAID' directory */ /* Don't give errors if we can't delete 'RAID' directory */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment