From 991897b667b1dd85aea009c1a5dfa4d505e1c2ef Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Tue, 14 Nov 2023 22:59:37 +0100 Subject: [PATCH] Revert "Prevent directory modifications when iterating" --- index.php | 40 +++++++++++++--------------------- lib/Updater.php | 40 +++++++++++++--------------------- updater.phar | Bin 760620 -> 760152 bytes vendor/composer/installed.php | 4 ++-- 4 files changed, 32 insertions(+), 52 deletions(-) diff --git a/index.php b/index.php index 5dc80709..eeecb25c 100644 --- a/index.php +++ b/index.php @@ -461,7 +461,7 @@ public function createBackup(): void { if (!file_exists($backupFolderLocation . '/' . dirname($fileName))) { $state = mkdir($backupFolderLocation . '/' . dirname($fileName), 0750, true); if ($state === false) { - throw new \Exception('Could not create folder: ' . $backupFolderLocation . '/' . dirname($fileName)); + throw new \Exception('Could not create folder: '.$backupFolderLocation.'/'.dirname($fileName)); } } @@ -544,7 +544,7 @@ private function getUpdateServerResponse(): array { /** @var false|string $response */ $response = curl_exec($curl); if ($response === false) { - throw new \Exception('Could not do request to updater server: ' . curl_error($curl)); + throw new \Exception('Could not do request to updater server: '.curl_error($curl)); } curl_close($curl); @@ -737,7 +737,7 @@ private function getVersionByVersionFile(string $versionFile): string { return implode('.', $OC_Version); } - throw new \Exception('OC_Version not found in ' . $versionFile); + throw new \Exception("OC_Version not found in $versionFile"); } /** @@ -754,15 +754,15 @@ public function extractDownload(): void { if ($zipState === true) { $extraction = $zip->extractTo(dirname($downloadedFilePath)); if ($extraction === false) { - throw new \Exception('Error during unpacking zipfile: ' . ($zip->getStatusString())); + throw new \Exception('Error during unpacking zipfile: '.($zip->getStatusString())); } $zip->close(); $state = unlink($downloadedFilePath); if ($state === false) { - throw new \Exception("Could not unlink " . $downloadedFilePath); + throw new \Exception("Can't unlink ". $downloadedFilePath); } } else { - throw new \Exception("Can't handle ZIP file. Error code is: " . print_r($zipState, true)); + throw new \Exception("Can't handle ZIP file. Error code is: ".print_r($zipState, true)); } // Ensure that the downloaded version is not lower @@ -804,7 +804,7 @@ public function replaceEntryPoints(): void { } $state = file_put_contents($this->baseDir . '/../' . $file, $content); if ($state === false) { - throw new \Exception('Can\'t replace entry point: ' . $file); + throw new \Exception('Can\'t replace entry point: '.$file); } } @@ -841,14 +841,10 @@ private function recursiveDelete(string $folder): void { } foreach ($files as $file) { - if (unlink($file) === false) { - throw new \Exception('Could not unlink ' . $file); - } + unlink($file); } foreach ($directories as $dir) { - if (rmdir($dir) === false) { - throw new \Exception('Could not rmdir ' . $dir); - } + rmdir($dir); } $state = rmdir($folder); @@ -937,10 +933,7 @@ public function deleteOldFiles(): void { * @var string $path * @var \SplFileInfo $fileInfo */ - // Build file list first, so the removals won't mess with it - /** @var array */ - $fileList = iterator_to_array($this->getRecursiveDirectoryIterator(), true); - foreach ($fileList as $path => $fileInfo) { + foreach ($this->getRecursiveDirectoryIterator() as $path => $fileInfo) { $currentDir = $this->baseDir . '/../'; $fileName = explode($currentDir, $path)[1]; $folderStructure = explode('/', $fileName, -1); @@ -957,7 +950,7 @@ public function deleteOldFiles(): void { if ($fileInfo->isFile() || $fileInfo->isLink()) { $state = unlink($path); if ($state === false) { - throw new \Exception('Could not unlink: ' . $path); + throw new \Exception('Could not unlink: '.$path); } } elseif ($fileInfo->isDir()) { $state = rmdir($path); @@ -980,10 +973,7 @@ private function moveWithExclusions(string $dataLocation, array $excludedElement * @var string $path * @var \SplFileInfo $fileInfo */ - // Build file list first, so the renames won't mess with it - /** @var array */ - $fileList = iterator_to_array($this->getRecursiveDirectoryIterator($dataLocation), true); - foreach ($fileList as $path => $fileInfo) { + foreach ($this->getRecursiveDirectoryIterator($dataLocation) as $path => $fileInfo) { $fileName = explode($dataLocation, $path)[1]; $folderStructure = explode('/', $fileName, -1); @@ -1064,12 +1054,12 @@ public function finalize(): void { $this->moveWithExclusions($storageLocation, []); $state = rmdir($storageLocation); if ($state === false) { - throw new \Exception('Could not rmdir ' . $storageLocation); + throw new \Exception('Could not rmdir $storagelocation'); } $state = unlink($this->getUpdateDirectoryLocation() . '/updater-'.$this->getConfigOptionMandatoryString('instanceid') . '/.step'); if ($state === false) { - throw new \Exception('Could not unlink .step'); + throw new \Exception('Could not rmdir .step'); } if (function_exists('opcache_reset')) { @@ -1089,7 +1079,7 @@ private function writeStep(string $state, int $step): void { if (!file_exists($updaterDir)) { $result = mkdir($updaterDir); if ($result === false) { - throw new \Exception('Could not create ' . $updaterDir); + throw new \Exception('Could not create $updaterDir'); } } $result = touch($updaterDir . '/.step'); diff --git a/lib/Updater.php b/lib/Updater.php index 4adc6820..37d112d1 100644 --- a/lib/Updater.php +++ b/lib/Updater.php @@ -423,7 +423,7 @@ public function createBackup(): void { if (!file_exists($backupFolderLocation . '/' . dirname($fileName))) { $state = mkdir($backupFolderLocation . '/' . dirname($fileName), 0750, true); if ($state === false) { - throw new \Exception('Could not create folder: ' . $backupFolderLocation . '/' . dirname($fileName)); + throw new \Exception('Could not create folder: '.$backupFolderLocation.'/'.dirname($fileName)); } } @@ -506,7 +506,7 @@ private function getUpdateServerResponse(): array { /** @var false|string $response */ $response = curl_exec($curl); if ($response === false) { - throw new \Exception('Could not do request to updater server: ' . curl_error($curl)); + throw new \Exception('Could not do request to updater server: '.curl_error($curl)); } curl_close($curl); @@ -699,7 +699,7 @@ private function getVersionByVersionFile(string $versionFile): string { return implode('.', $OC_Version); } - throw new \Exception('OC_Version not found in ' . $versionFile); + throw new \Exception("OC_Version not found in $versionFile"); } /** @@ -716,15 +716,15 @@ public function extractDownload(): void { if ($zipState === true) { $extraction = $zip->extractTo(dirname($downloadedFilePath)); if ($extraction === false) { - throw new \Exception('Error during unpacking zipfile: ' . ($zip->getStatusString())); + throw new \Exception('Error during unpacking zipfile: '.($zip->getStatusString())); } $zip->close(); $state = unlink($downloadedFilePath); if ($state === false) { - throw new \Exception("Could not unlink " . $downloadedFilePath); + throw new \Exception("Can't unlink ". $downloadedFilePath); } } else { - throw new \Exception("Can't handle ZIP file. Error code is: " . print_r($zipState, true)); + throw new \Exception("Can't handle ZIP file. Error code is: ".print_r($zipState, true)); } // Ensure that the downloaded version is not lower @@ -766,7 +766,7 @@ public function replaceEntryPoints(): void { } $state = file_put_contents($this->baseDir . '/../' . $file, $content); if ($state === false) { - throw new \Exception('Can\'t replace entry point: ' . $file); + throw new \Exception('Can\'t replace entry point: '.$file); } } @@ -803,14 +803,10 @@ private function recursiveDelete(string $folder): void { } foreach ($files as $file) { - if (unlink($file) === false) { - throw new \Exception('Could not unlink ' . $file); - } + unlink($file); } foreach ($directories as $dir) { - if (rmdir($dir) === false) { - throw new \Exception('Could not rmdir ' . $dir); - } + rmdir($dir); } $state = rmdir($folder); @@ -899,10 +895,7 @@ public function deleteOldFiles(): void { * @var string $path * @var \SplFileInfo $fileInfo */ - // Build file list first, so the removals won't mess with it - /** @var array */ - $fileList = iterator_to_array($this->getRecursiveDirectoryIterator(), true); - foreach ($fileList as $path => $fileInfo) { + foreach ($this->getRecursiveDirectoryIterator() as $path => $fileInfo) { $currentDir = $this->baseDir . '/../'; $fileName = explode($currentDir, $path)[1]; $folderStructure = explode('/', $fileName, -1); @@ -919,7 +912,7 @@ public function deleteOldFiles(): void { if ($fileInfo->isFile() || $fileInfo->isLink()) { $state = unlink($path); if ($state === false) { - throw new \Exception('Could not unlink: ' . $path); + throw new \Exception('Could not unlink: '.$path); } } elseif ($fileInfo->isDir()) { $state = rmdir($path); @@ -942,10 +935,7 @@ private function moveWithExclusions(string $dataLocation, array $excludedElement * @var string $path * @var \SplFileInfo $fileInfo */ - // Build file list first, so the renames won't mess with it - /** @var array */ - $fileList = iterator_to_array($this->getRecursiveDirectoryIterator($dataLocation), true); - foreach ($fileList as $path => $fileInfo) { + foreach ($this->getRecursiveDirectoryIterator($dataLocation) as $path => $fileInfo) { $fileName = explode($dataLocation, $path)[1]; $folderStructure = explode('/', $fileName, -1); @@ -1026,12 +1016,12 @@ public function finalize(): void { $this->moveWithExclusions($storageLocation, []); $state = rmdir($storageLocation); if ($state === false) { - throw new \Exception('Could not rmdir ' . $storageLocation); + throw new \Exception('Could not rmdir $storagelocation'); } $state = unlink($this->getUpdateDirectoryLocation() . '/updater-'.$this->getConfigOptionMandatoryString('instanceid') . '/.step'); if ($state === false) { - throw new \Exception('Could not unlink .step'); + throw new \Exception('Could not rmdir .step'); } if (function_exists('opcache_reset')) { @@ -1051,7 +1041,7 @@ private function writeStep(string $state, int $step): void { if (!file_exists($updaterDir)) { $result = mkdir($updaterDir); if ($result === false) { - throw new \Exception('Could not create ' . $updaterDir); + throw new \Exception('Could not create $updaterDir'); } } $result = touch($updaterDir . '/.step'); diff --git a/updater.phar b/updater.phar index d21639a669907179291ef3afec22d9e3970e7c78..ddba9d5cfc16d85b6ab2477084d3d092d85e9174 100755 GIT binary patch delta 5823 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 delta 5978 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 diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index 0c941aa1..a1f1e348 100644 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -3,7 +3,7 @@ 'name' => '__root__', 'pretty_version' => 'dev-master', 'version' => 'dev-master', - 'reference' => '14ccc22088938656fb221e3d7f7e8928a58332ab', + 'reference' => 'aac9e4b1f9edc88a0d28dcbfca50276c9a2c25ba', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -13,7 +13,7 @@ '__root__' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', - 'reference' => '14ccc22088938656fb221e3d7f7e8928a58332ab', + 'reference' => 'aac9e4b1f9edc88a0d28dcbfca50276c9a2c25ba', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(),