From c2c7c271e74e2531b80e857865b598a738179135 Mon Sep 17 00:00:00 2001 From: rxu Date: Wed, 24 May 2023 20:49:01 +0700 Subject: [PATCH 1/3] [ticket/17139] Fix PHP fatal error for file transfer tool of updater PHPBB3-17139 --- phpBB/includes/functions_transfer.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/includes/functions_transfer.php b/phpBB/includes/functions_transfer.php index f0070b4b1e..4621725be1 100644 --- a/phpBB/includes/functions_transfer.php +++ b/phpBB/includes/functions_transfer.php @@ -281,7 +281,7 @@ class ftp extends transfer } // Init some needed values - $this->transfer(); + parent::__construct(); return; } From e0144ae7b2215ff6819b777454f419e7561a66d9 Mon Sep 17 00:00:00 2001 From: rxu Date: Wed, 24 May 2023 22:39:16 +0700 Subject: [PATCH 2/3] [ticket/17139] Fix PHP fatal error for file transfer tool of updater Uncaught TypeError: ftp_delete(): Argument #1 ($ftp) must be of type FTP\\Connection, bool given Stack trace: #0 [ROOT]/includes/functions_transfer.php(427): ftp_delete(false, '...') PHPBB3-17139 --- phpBB/includes/functions_transfer.php | 50 +++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/phpBB/includes/functions_transfer.php b/phpBB/includes/functions_transfer.php index 4621725be1..763b6c70db 100644 --- a/phpBB/includes/functions_transfer.php +++ b/phpBB/includes/functions_transfer.php @@ -341,6 +341,11 @@ class ftp extends transfer */ function _mkdir($dir) { + if (!$this->connection) + { + return false; + } + return @ftp_mkdir($this->connection, $dir); } @@ -350,6 +355,11 @@ class ftp extends transfer */ function _rmdir($dir) { + if (!$this->connection) + { + return false; + } + return @ftp_rmdir($this->connection, $dir); } @@ -359,6 +369,11 @@ class ftp extends transfer */ function _rename($old_handle, $new_handle) { + if (!$this->connection) + { + return false; + } + return @ftp_rename($this->connection, $old_handle, $new_handle); } @@ -368,6 +383,11 @@ class ftp extends transfer */ function _chdir($dir = '') { + if (!$this->connection) + { + return false; + } + if ($dir && $dir !== '/') { if (substr($dir, -1, 1) == '/') @@ -385,6 +405,11 @@ class ftp extends transfer */ function _chmod($file, $perms) { + if (!$this->connection) + { + return false; + } + if (function_exists('ftp_chmod')) { $err = @ftp_chmod($this->connection, $perms, $file); @@ -406,6 +431,11 @@ class ftp extends transfer */ function _put($from_file, $to_file) { + if (!$this->connection) + { + return false; + } + // We only use the BINARY file mode to cicumvent rewrite actions from ftp server (mostly linefeeds being replaced) $mode = FTP_BINARY; @@ -425,6 +455,11 @@ class ftp extends transfer */ function _delete($file) { + if (!$this->connection) + { + return false; + } + return @ftp_delete($this->connection, $file); } @@ -449,6 +484,11 @@ class ftp extends transfer */ function _cwd() { + if (!$this->connection) + { + return false; + } + return @ftp_pwd($this->connection); } @@ -458,6 +498,11 @@ class ftp extends transfer */ function _ls($dir = './') { + if (!$this->connection) + { + return false; + } + $list = @ftp_nlist($this->connection, $dir); // See bug #46295 - Some FTP daemons don't like './' @@ -498,6 +543,11 @@ class ftp extends transfer */ function _site($command) { + if (!$this->connection) + { + return false; + } + return @ftp_site($this->connection, $command); } } From 26d002a51a0a233ef6cf7be9e50e7efc5235cd5b Mon Sep 17 00:00:00 2001 From: rxu Date: Thu, 25 May 2023 20:22:42 +0700 Subject: [PATCH 3/3] [ticket/17139] Fix more PHP fatal errors PHPBB3-17139 --- phpBB/includes/functions_transfer.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/phpBB/includes/functions_transfer.php b/phpBB/includes/functions_transfer.php index 763b6c70db..b240347c86 100644 --- a/phpBB/includes/functions_transfer.php +++ b/phpBB/includes/functions_transfer.php @@ -832,6 +832,11 @@ class ftp_fsock extends transfer */ function _send_command($command, $args = '', $check = true) { + if (!$this->connection) + { + return false; + } + if (!empty($args)) { $command = "$command $args"; @@ -921,6 +926,11 @@ class ftp_fsock extends transfer */ function _close_data_connection() { + if (!$this->connection) + { + return false; + } + return @fclose($this->data_connection); } @@ -930,6 +940,11 @@ class ftp_fsock extends transfer */ function _check_command($return = false) { + if (!$this->connection) + { + return false; + } + $response = ''; do