From: Björn Schießle Date: Fri, 14 Jun 2013 13:07:06 +0000 (+0200) Subject: only escape glob pattern X-Git-Tag: v5.0.8~81 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=1fead354b2a4b83a5dd34476e686b1bc3e2de3ad;p=nextcloud-server.git only escape glob pattern Conflicts: apps/files_trashbin/lib/trash.php --- diff --git a/apps/files_trashbin/lib/trash.php b/apps/files_trashbin/lib/trash.php index 29e750ef89f..6a4b832802c 100644 --- a/apps/files_trashbin/lib/trash.php +++ b/apps/files_trashbin/lib/trash.php @@ -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) { diff --git a/apps/files_versions/lib/versions.php b/apps/files_versions/lib/versions.php index 4beb9e0fe5c..757926cd77a 100644 --- a/apps/files_versions/lib/versions.php +++ b/apps/files_versions/lib/versions.php @@ -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;