summaryrefslogtreecommitdiffstats
path: root/apps/files_encryption
diff options
context:
space:
mode:
authorBjörn Schießle <schiessle@owncloud.com>2013-06-25 16:50:10 +0200
committerBjörn Schießle <schiessle@owncloud.com>2013-07-05 16:00:17 +0200
commitf9c337dd2149248be717f870bdba79ac21868bbe (patch)
treeefa7b3c484b92eec19304275a9419973baace767 /apps/files_encryption
parent93730a090be9587a5b6c52fe52afaba0a48be1e9 (diff)
downloadnextcloud-server-f9c337dd2149248be717f870bdba79ac21868bbe.tar.gz
nextcloud-server-f9c337dd2149248be717f870bdba79ac21868bbe.zip
only escape glob pattern
Diffstat (limited to 'apps/files_encryption')
-rw-r--r--apps/files_encryption/hooks/hooks.php3
-rwxr-xr-xapps/files_encryption/lib/keymanager.php10
2 files changed, 9 insertions, 4 deletions
diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php
index 96f06b154f8..c26119b6c2e 100644
--- a/apps/files_encryption/hooks/hooks.php
+++ b/apps/files_encryption/hooks/hooks.php
@@ -497,7 +497,8 @@ class Hooks {
// handle share-keys
$localKeyPath = $view->getLocalFile($baseDir . 'share-keys/' . $params['oldpath']);
- $matches = glob(preg_quote($localKeyPath) . '*.shareKey');
+ $escapedPath = preg_replace('/(\*|\?|\[)/', '[$1]', $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/keymanager.php b/apps/files_encryption/lib/keymanager.php
index 8de1d413642..da2ee380e89 100755
--- a/apps/files_encryption/lib/keymanager.php
+++ b/apps/files_encryption/lib/keymanager.php
@@ -488,7 +488,8 @@ class Keymanager {
$view->unlink($baseDir . $filePath);
} else {
$localKeyPath = $view->getLocalFile($baseDir . $filePath);
- $matches = glob(preg_quote($localKeyPath) . '*.shareKey');
+ $escapedPath = preg_replace('/(\*|\?|\[)/', '[$1]', $localKeyPath);
+ $matches = glob($escapedPath . '*.shareKey');
foreach ($matches as $ma) {
$result = unlink($ma);
if (!$result) {
@@ -547,7 +548,10 @@ class Keymanager {
*/
private static function recursiveDelShareKeys($dir, $userIds) {
foreach ($userIds as $userId) {
- $matches = glob(preg_quote($dir) . '/*' . preg_quote('.' . $userId . '.shareKey'));
+ $extension = '.' . $userId . '.shareKey';
+ $escapedDir = preg_replace('/(\*|\?|\[)/', '[$1]', $dir);
+ $escapedExtension = preg_replace('/(\*|\?|\[)/', '[$1]', $extension);
+ $matches = glob($escapedDir . '/*' . $escapedExtension);
}
/** @var $matches array */
foreach ($matches as $ma) {
@@ -556,7 +560,7 @@ class Keymanager {
'Could not delete shareKey; does not exist: "' . $ma . '"', \OCP\Util::ERROR);
}
}
- $subdirs = $directories = glob(preg_quote($dir) . '/*', GLOB_ONLYDIR);
+ $subdirs = $directories = glob($escapedDir . '/*', GLOB_ONLYDIR);
foreach ($subdirs as $subdir) {
self::recursiveDelShareKeys($subdir, $userIds);
}