From 254634479c9bb8b15c9f3a98e3bf44347c7e38e5 Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Sat, 19 Jun 2021 19:54:30 +0900 Subject: [PATCH] Fix #1721 add some safeguards when saving system config file --- common/framework/config.php | 22 ++++++++++++++++++++-- common/framework/storage.php | 2 +- modules/admin/admin.admin.controller.php | 5 ++++- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/common/framework/config.php b/common/framework/config.php index 3b6196883..d5c7313a9 100644 --- a/common/framework/config.php +++ b/common/framework/config.php @@ -135,16 +135,34 @@ class Config self::setAll($config); } + // Backup the main config file. + $config_filename = \RX_BASEDIR . self::$config_filename; + $backup_filename = \RX_BASEDIR . self::$config_filename . '.backup.' . time() . '.php'; + $result = Storage::copy($config_filename, $backup_filename); + clearstatcache(true, $backup_filename); + if (!$result || filesize($config_filename) !== filesize($backup_filename)) + { + return false; + } + // Save the main config file. $buff = 'http_port ?: null); Rhymix\Framework\Config::set('url.https_port', $vars->https_port ?: null); Rhymix\Framework\Config::set('url.ssl', $vars->domain_security); - Rhymix\Framework\Config::save(); + if (!Rhymix\Framework\Config::save()) + { + throw new Rhymix\Framework\Exception('msg_failed_to_save_config'); + } } // Commit.