]> source.dussan.org Git - nextcloud-server.git/commitdiff
only escape glob pattern
authorBjörn Schießle <schiessle@owncloud.com>
Fri, 14 Jun 2013 13:07:06 +0000 (15:07 +0200)
committerBjörn Schießle <schiessle@owncloud.com>
Mon, 17 Jun 2013 13:39:43 +0000 (15:39 +0200)
Conflicts:

apps/files_trashbin/lib/trash.php

apps/files_trashbin/lib/trash.php
apps/files_versions/lib/versions.php

index 29e750ef89f66e4ba35fd8a5737be00d03c4b8d4..6a4b832802ce0dece878c2e4470af79d0497af30 100644 (file)
@@ -191,14 +191,16 @@ class Trashbin {
                                $size += self::calculateSize(new \OC\Files\View($sharekeys));
                                $rootView->rename($sharekeys, $user . '/files_trashbin/share-keys/' . $filename . '.d' . $timestamp);
                        } else {
-                               // get local path to share-keys
+
+                // get local path to share-keys
                                $localShareKeysPath = $rootView->getLocalFile($sharekeys);
+                               $escapedLocalShareKeysPath = preg_replace('/(\*|\?|\[)/', '[$1]', $localShareKeysPath);
 
-                               // handle share-keys
-                               $matches = glob(preg_quote($localShareKeysPath) . '*.shareKey');
-                               foreach ($matches as $src) {
-                                       // get source file parts
-                                       $pathinfo = pathinfo($src);
+                // handle share-keys
+                $matches = glob($escapedLocalShareKeysPath.'*.shareKey');
+                foreach ($matches as $src) {
+                    // get source file parts
+                    $pathinfo = pathinfo($src);
 
                                        // we only want to keep the owners key so we can access the private key
                                        $ownerShareKey = $filename . '.' . $user . '.shareKey';
@@ -724,15 +726,17 @@ class Trashbin {
         * @param $timestamp timestamp when the file was deleted
         */
        private static function getVersionsFromTrash($filename, $timestamp) {
-               $view = new \OC\Files\View('/' . \OCP\User::getUser() . '/files_trashbin/versions');
-               $versionsName = $view->getLocalFile($filename);
+
+               $view = new \OC\Files\View('/'.\OCP\User::getUser().'/files_trashbin/versions');
+               $versionsName = $view->getLocalFile($filename).'.v';
+               $escapedVersionsName = preg_replace('/(\*|\?|\[)/', '[$1]', $versionsName);
                $versions = array();
                if ($timestamp) {
                        // fetch for old versions
-                       $matches = glob($versionsName . '.v*.d' . $timestamp);
-                       $offset = -strlen($timestamp) - 2;
+                       $matches = glob( $escapedVersionsName.'*.d'.$timestamp );
+                       $offset = -strlen($timestamp)-2;
                } else {
-                       $matches = glob($versionsName . '.v*');
+                       $matches = glob( $escapedVersionsName.'*' );
                }
 
                foreach ($matches as $ma) {
index 4beb9e0fe5cc18929f4255871836c3de4d009ab8..757926cd77a64aac13911ff4623f7b5eef4e7e92 100644 (file)
@@ -241,11 +241,12 @@ class Storage {
        public static function getVersions($uid, $filename, $count = 0 ) {
                if( \OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true' ) {
                        $versions_fileview = new \OC\Files\View('/' . $uid . '/files_versions');
-                       $versionsName = $versions_fileview->getLocalFile($filename);
-                       
+                       $versionsName = \OC_Filesystem::normalizePath($versions_fileview->getLocalFile($filename).'.v');
+                       $escapedVersionName = preg_replace('/(\*|\?|\[)/', '[$1]', $versionsName);
+
                        $versions = array();
                        // fetch for old versions
-                       $matches = glob(preg_quote($versionsName).'.v*' );
+                       $matches = glob($escapedVersionName.'*');
 
                        if ( !$matches ) {
                                return $versions;