From 28b7fbc97cf89f391e2edcf055c841a7fdf8c20d Mon Sep 17 00:00:00 2001 From: int2001 Date: Wed, 31 Jan 2024 17:15:26 +0000 Subject: [PATCH] catch exception from RecursiveDirectory-Checker if dir isn't write or readable --- application/libraries/Permissions.php | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/application/libraries/Permissions.php b/application/libraries/Permissions.php index e9d0b4ab1..feec43228 100644 --- a/application/libraries/Permissions.php +++ b/application/libraries/Permissions.php @@ -3,8 +3,8 @@ class Permissions { /* - * Class Description: Provide functions for checking file and folder permissions - */ + * Class Description: Provide functions for checking file and folder permissions + */ function is_really_writable($folder) { // Get the absolute path to the folder @@ -16,18 +16,22 @@ class Permissions { } // Check if the folder is writable - if (is_writable($path)) { - // Check if the subdirectories are writable (recursive check) - $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)); - foreach ($iterator as $item) { - if ($item->isDir() && basename($item->getPathName()) != '..') { - if (!is_writable($item->getRealPath())) { - return false; + try { + if (is_writable($path)) { + // Check if the subdirectories are writable (recursive check) + $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)); + foreach ($iterator as $item) { + if ($item->isDir() && basename($item->getPathName()) != '..') { + if (!is_writable($item->getRealPath())) { + return false; + } } } - } - return true; + return true; + } + } catch(Exception $e) { + return false; } return false;