From: Björn Schießle Date: Fri, 5 Jul 2013 12:58:33 +0000 (+0200) Subject: added helper function to escape glob pattern X-Git-Tag: v6.0.0alpha2~506 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=9575c2f37c39ae0799c3b8faec4d7902d17e6832;p=nextcloud-server.git added helper function to escape glob pattern Conflicts: apps/files_encryption/lib/helper.php --- diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php index c26119b6c2e..b2a17f6bca5 100644 --- a/apps/files_encryption/hooks/hooks.php +++ b/apps/files_encryption/hooks/hooks.php @@ -497,7 +497,7 @@ class Hooks { // handle share-keys $localKeyPath = $view->getLocalFile($baseDir . 'share-keys/' . $params['oldpath']); - $escapedPath = preg_replace('/(\*|\?|\[)/', '[$1]', $localKeyPath); + $escapedPath = Helper::escapeGlobPattern($localKeyPath); $matches = glob($escapedPath . '*.shareKey'); foreach ($matches as $src) { $dst = \OC\Files\Filesystem::normalizePath(str_replace($params['oldpath'], $params['newpath'], $src)); diff --git a/apps/files_encryption/lib/helper.php b/apps/files_encryption/lib/helper.php index 31cf48a0393..1b9637c1b9a 100755 --- a/apps/files_encryption/lib/helper.php +++ b/apps/files_encryption/lib/helper.php @@ -218,7 +218,6 @@ class Helper { exit(); } - /** * check requirements for encryption app. * @return bool true if requirements are met @@ -234,3 +233,14 @@ class Helper { return (bool) $result; } } + + /** + * @brief glob uses different pattern than regular expressions, escape glob pattern only + * @param unescaped path + * @return escaped path + */ + public static function escapeGlobPattern($path) { + return preg_replace('/(\*|\?|\[)/', '[$1]', $path); + } +} + diff --git a/apps/files_encryption/lib/keymanager.php b/apps/files_encryption/lib/keymanager.php index da2ee380e89..b2fd650f18d 100755 --- a/apps/files_encryption/lib/keymanager.php +++ b/apps/files_encryption/lib/keymanager.php @@ -488,7 +488,7 @@ class Keymanager { $view->unlink($baseDir . $filePath); } else { $localKeyPath = $view->getLocalFile($baseDir . $filePath); - $escapedPath = preg_replace('/(\*|\?|\[)/', '[$1]', $localKeyPath); + $escapedPath = Helper::escapeGlobPattern($localKeyPath); $matches = glob($escapedPath . '*.shareKey'); foreach ($matches as $ma) { $result = unlink($ma); @@ -549,8 +549,8 @@ class Keymanager { private static function recursiveDelShareKeys($dir, $userIds) { foreach ($userIds as $userId) { $extension = '.' . $userId . '.shareKey'; - $escapedDir = preg_replace('/(\*|\?|\[)/', '[$1]', $dir); - $escapedExtension = preg_replace('/(\*|\?|\[)/', '[$1]', $extension); + $escapedDir = Helper::escapeGlobPattern($dir); + $escapedExtension = Helper::escapeGlobPattern($extension); $matches = glob($escapedDir . '/*' . $escapedExtension); } /** @var $matches array */