Merge pull request #6546 from Derky/ticket/17189

[Ticket/17189] Improve installer file permission checks
This commit is contained in:
Marc Alexander 2023-10-04 20:03:17 +02:00
commit 233d6a0a69
No known key found for this signature in database
GPG key ID: 50E0D2423696F995
4 changed files with 8 additions and 6 deletions

View file

@ -159,9 +159,9 @@ function installer_shutdown_function($display_errors)
installer_class_loader($phpbb_root_path, $phpEx); installer_class_loader($phpbb_root_path, $phpEx);
$supported_error_levels = E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_USER_DEPRECATED; $supported_error_levels = E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_USER_DEPRECATED;
$cache = new \phpbb\cache\driver\file(__DIR__ . '/../cache/installer'); $cache = new \phpbb\cache\driver\file(__DIR__ . '/../cache/installer/');
$filesystem = new \phpbb\filesystem\filesystem(); $filesystem = new \phpbb\filesystem\filesystem();
if (strpos($error['file'], $filesystem->realpath($cache->cache_dir)) !== false) if (strpos($error['file'], $filesystem->realpath($cache->cache_dir)) !== false && is_writable($cache->cache_dir))
{ {
$file_age = @filemtime($error['file']); $file_age = @filemtime($error['file']);

View file

@ -37,9 +37,9 @@ class file extends \phpbb\cache\driver\base
$this->cache_dir = !is_null($cache_dir) ? $cache_dir : $phpbb_container->getParameter('core.cache_dir'); $this->cache_dir = !is_null($cache_dir) ? $cache_dir : $phpbb_container->getParameter('core.cache_dir');
$this->filesystem = new \phpbb\filesystem\filesystem(); $this->filesystem = new \phpbb\filesystem\filesystem();
if (!is_dir($this->cache_dir)) if ($this->filesystem->is_writable(dirname($this->cache_dir)) && !is_dir($this->cache_dir))
{ {
@mkdir($this->cache_dir, 0777, true); mkdir($this->cache_dir, 0777, true);
} }
} }

View file

@ -398,13 +398,13 @@ class filesystem implements filesystem_interface
$file_gid = @filegroup($file); $file_gid = @filegroup($file);
// Change owner // Change owner
if ($file_uid !== $this->chmod_info['common_owner']) if (is_writable($file) && $file_uid !== $this->chmod_info['common_owner'])
{ {
$this->chown($file, $this->chmod_info['common_owner'], $recursive); $this->chown($file, $this->chmod_info['common_owner'], $recursive);
} }
// Change group // Change group
if ($file_gid !== $this->chmod_info['common_group']) if (is_writable($file) && $file_gid !== $this->chmod_info['common_group'])
{ {
$this->chgrp($file, $this->chmod_info['common_group'], $recursive); $this->chgrp($file, $this->chmod_info['common_group'], $recursive);
} }

View file

@ -217,6 +217,7 @@ class check_filesystem extends \phpbb\install\task_base
catch (\phpbb\filesystem\exception\filesystem_exception $e) catch (\phpbb\filesystem\exception\filesystem_exception $e)
{ {
// Do nothing // Do nothing
$this->response->add_warning_message($e->getMessage(), $e->get_filename());
} }
} }
@ -232,6 +233,7 @@ class check_filesystem extends \phpbb\install\task_base
} }
catch (\phpbb\filesystem\exception\filesystem_exception $e) catch (\phpbb\filesystem\exception\filesystem_exception $e)
{ {
$this->response->add_warning_message($e->getMessage(), $e->get_filename());
// Do nothing // Do nothing
} }
} }