From 51c1d648b22fbd038eea763fc1dd897003b46286 Mon Sep 17 00:00:00 2001 From: Michael Kaufmann Date: Tue, 28 Jun 2022 20:06:52 +0200 Subject: [PATCH] fix passing complex passwords with special characters to mysqldump in backup-cron; fixes #1038 Signed-off-by: Michael Kaufmann --- lib/Froxlor/Cron/System/BackupCron.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/Froxlor/Cron/System/BackupCron.php b/lib/Froxlor/Cron/System/BackupCron.php index 899e7717..bcaadd95 100644 --- a/lib/Froxlor/Cron/System/BackupCron.php +++ b/lib/Froxlor/Cron/System/BackupCron.php @@ -150,13 +150,17 @@ class BackupCron extends \Froxlor\Cron\FroxlorCron $sql_root = Database::getSqlData(); Database::needRoot(false); + $mysqlcnf_file = tempnam("/tmp", "frx"); + $mysqlcnf = "[mysqldump]\npassword=".$sql_root['passwd']."\n"; + file_put_contents($mysqlcnf_file, $mysqlcnf); + $has_dbs = false; while ($row = $sel_stmt->fetch()) { $cronlog->logAction(\Froxlor\FroxlorLogger::CRON_ACTION, LOG_DEBUG, 'shell> mysqldump -u ' . escapeshellarg($sql_root['user']) . ' -pXXXXX ' . $row['databasename'] . ' > ' . \Froxlor\FileDir::makeCorrectFile($tmpdir . '/mysql/' . $row['databasename'] . '_' . date('YmdHi', time()) . '.sql')); $bool_false = false; - \Froxlor\FileDir::safe_exec('mysqldump -u ' . escapeshellarg($sql_root['user']) . ' -p' . $sql_root['passwd'] . ' ' . $row['databasename'] . ' > ' . \Froxlor\FileDir::makeCorrectFile($tmpdir . '/mysql/' . $row['databasename'] . '_' . date('YmdHi', time()) . '.sql'), $bool_false, array( + FileDir::safe_exec('mysqldump --defaults-file=' . escapeshellarg($mysqlcnf_file) .' -u ' . escapeshellarg($sql_root['user']) . ' ' . $row['databasename'] . ' > ' . FileDir::makeCorrectFile($tmpdir . '/mysql/' . $row['databasename'] . '_' . date('YmdHi', time()) . '.sql'), $bool_false, [ '>' - )); + ]); $has_dbs = true; } @@ -164,6 +168,8 @@ class BackupCron extends \Froxlor\Cron\FroxlorCron $create_backup_tar_data .= './mysql '; } + unlink($mysqlcnf_file); + unset($sql_root); }