]> source.dussan.org Git - nextcloud-server.git/commitdiff
reliable detect encrypted files
authorBjoern Schiessle <schiessle@owncloud.com>
Tue, 17 Dec 2013 14:53:25 +0000 (15:53 +0100)
committerBjoern Schiessle <schiessle@owncloud.com>
Tue, 17 Dec 2013 14:53:25 +0000 (15:53 +0100)
apps/files_encryption/lib/util.php

index bf7c49504a2163d56951e8c7887f67931352f2e4..d4aa4d316494b8bb624be1ebe008bb854fc1e6e0 100644 (file)
@@ -464,20 +464,22 @@ class Util {
         */
        public function isEncryptedPath($path) {
 
-               $relPath = Helper::getPathToRealFile($path);
-
-               if ($relPath === false) {
-                       $relPath = Helper::stripUserFilesPath($path);
-               }
-
-               $fileKey = Keymanager::getFileKey($this->view, $this, $relPath);
+               // Disable encryption proxy so data retrieved is in its
+               // original form
+               $proxyStatus = \OC_FileProxy::$enabled;
+               \OC_FileProxy::$enabled = false;
 
-               if ($fileKey === false) {
-                       return false;
+               // we only need 24 byte from the last chunk
+               $data = '';
+               $handle = $this->view->fopen($path, 'r');
+               if (is_resource($handle) && !fseek($handle, -24, SEEK_END)) {
+                       $data = fgets($handle);
                }
 
-               return true;
+               // re-enable proxy
+               \OC_FileProxy::$enabled = $proxyStatus;
 
+               return Crypt::isCatfileContent($data);
        }
 
        /**