From 9575c2f37c39ae0799c3b8faec4d7902d17e6832 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= <schiessle@owncloud.com>
Date: Fri, 5 Jul 2013 14:58:33 +0200
Subject: [PATCH] added helper function to escape glob pattern

Conflicts:

	apps/files_encryption/lib/helper.php
---
 apps/files_encryption/hooks/hooks.php    |  2 +-
 apps/files_encryption/lib/helper.php     | 12 +++++++++++-
 apps/files_encryption/lib/keymanager.php |  6 +++---
 3 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/apps/files_encryption/hooks/hooks.php b/apps/files_encryption/hooks/hooks.php
index c26119b6c2..b2a17f6bca 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 31cf48a039..1b9637c1b9 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 da2ee380e8..b2fd650f18 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 */
-- 
GitLab