mirror of
https://github.com/MariaDB/server.git
synced 2026-01-06 05:22:24 +03:00
Corrected fix for DROP DATABASE on symbolic link
This commit is contained in:
@@ -271,20 +271,20 @@ static long mysql_rm_known_files(THD *thd, MY_DIR *dirp, const char *org_path,
|
||||
*/
|
||||
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);
|
||||
#ifdef HAVE_READLINK
|
||||
if (path[0] == FN_CURLIB)
|
||||
int error;
|
||||
|
||||
/* Remove end FN_LIBCHAR as this causes problem on Linux in readlink */
|
||||
pos=strend(path);
|
||||
if (pos > path && pos[-1] == FN_LIBCHAR)
|
||||
*--pos=0;
|
||||
|
||||
if ((error=my_readlink(filePath, path, MYF(MY_WME))) < 0)
|
||||
DBUG_RETURN(-1);
|
||||
if (!error)
|
||||
{
|
||||
int length = (strxmov(lnk_path,curr_dir,path + 2, NullS) - lnk_path) - 1;
|
||||
path=lnk_path;
|
||||
if (path[length] == FN_LIBCHAR)
|
||||
path[length]='\0';
|
||||
}
|
||||
int linkcount = readlink(path,filePath,sizeof(filePath)-1);
|
||||
if (linkcount > 0) // If the path was a symbolic link
|
||||
{
|
||||
*(filePath + linkcount) = '\0';
|
||||
if (my_delete(path,MYF(!level ? MY_WME : 0)))
|
||||
{
|
||||
/* 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,
|
||||
send_error(&thd->net);
|
||||
DBUG_RETURN(-1);
|
||||
}
|
||||
path=filePath;
|
||||
/* Delete directory symbolic link pointed at */
|
||||
path= filePath;
|
||||
}
|
||||
#endif
|
||||
/* 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)
|
||||
*--pos=0;
|
||||
/* Don't give errors if we can't delete 'RAID' directory */
|
||||
|
||||
Reference in New Issue
Block a user