Bug #69752 | mysql_plugin removes non-directory type files specified with the basedir option | ||
---|---|---|---|
Submitted: | 15 Jul 2013 19:51 | Modified: | 2 Dec 2013 17:51 |
Reporter: | Davi Arnaut (OCA) | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Command-line Clients | Severity: | S2 (Serious) |
Version: | 5.5 | OS: | Any |
Assigned to: | CPU Architecture: | Any | |
Tags: | basedir, delete, mysql_plugin |
[15 Jul 2013 19:51]
Davi Arnaut
[16 Jul 2013 8:42]
MySQL Verification Team
Hello Davi, Thank you for the report and contribution. Thanks, Umesh
[2 Dec 2013 17:51]
Paul DuBois
Noted in 5.5.36, 5.6.16, 5.7.4 changelogs. For the path specified with the --basedir option, mysql_plugin attempted to unlink the path rather than free the memory in which the path was stored.
[4 Dec 2013 9:03]
Laurynas Biveinis
5.5$ bzr log -r 4464 ------------------------------------------------------------ revno: 4464 committer: Arun Kuruvila <arun.kuruvila@oracle.com> branch nick: fixed-5-5 timestamp: Mon 2013-09-02 14:53:45 +0530 message: Bug #17168602 MYSQL_PLUGIN REMOVES NON-DIRECTORY TYPE FILES SPECIFIED WITH THE BASEDIR OPTION Description: The mysql_plugin client attempts to remove any filename specified to the --basedir option. The problem is that if the filename does not end with a slash, it will attempt to unlink it, which succeeds for files, but not for directories. Analysis: When we are starting mysql_plugin with basedir option and if we are giving path of a file as basedir, it deletes that file. It was because it uses a function my_delete which unlinks the file path given. Fix: As a fix we replace that line using another function my_free, which will only free the pointer which is having that file path.
[4 Dec 2013 9:09]
Laurynas Biveinis
5.5$ bzr log -r 4467 ------------------------------------------------------------ revno: 4467 committer: Venkata Sidagam <venkata.sidagam@oracle.com> branch nick: 5.5 timestamp: Thu 2013-09-05 14:18:43 +0530 message: Bug #17168602 MYSQL_PLUGIN REMOVES NON-DIRECTORY TYPE FILES SPECIFIED WITH THE BASEDIR OPTION Reverting the patch. Because asked for second review.
[4 Dec 2013 9:42]
Laurynas Biveinis
It appears that this bug was not fixed after all since the fix was reverted. client/mysql_plugin.c line 859 still reads my_delete() at bzr revno 4535 (5.5.35)
[16 Dec 2013 15:43]
Paul DuBois
The 5.5 fix is in 5.5.36, not 5.5.35.
[17 Dec 2013 5:10]
Laurynas Biveinis
Ah, I didn't notice the exact fix version. Sorry for the confusion.
[2 Feb 2014 17:33]
Laurynas Biveinis
5.5$ bzr log -r 4551 ------------------------------------------------------------ revno: 4551 committer: Arun Kuruvila <arun.kuruvila@oracle.com> branch nick: mysql-5.5 timestamp: Mon 2013-11-25 12:31:09 +0530 message: Bug #17168602 MYSQL_PLUGIN REMOVES NON-DIRECTORY TYPE FILES SPECIFIED WITH THE BASEDIR OPTION Description: The mysql_plugin client attempts to remove any filename specified to the --basedir option. The problem is that if the filename does not end with a slash, it will attempt to unlink it, which succeeds for files, but not for directories. Analysis: When we are starting mysql_plugin with basedir option and if we are giving path of a file as basedir, it deletes that file. It was because it uses a function my_delete which unlinks the file path given. Fix: As a fix we replace that line using another function my_free, which will only free the pointer which is having that file path.