]> source.dussan.org Git - nextcloud-server.git/commitdiff
Check for relative datadirectory path
authorRobin McCorkell <rmccorkell@karoshi.org.uk>
Fri, 27 Mar 2015 23:27:21 +0000 (23:27 +0000)
committerRobin McCorkell <rmccorkell@karoshi.org.uk>
Fri, 27 Mar 2015 23:29:46 +0000 (23:29 +0000)
lib/private/util.php
tests/lib/util.php

index a0ef491d9dbf832140cf9a86e5f40ad9b0014dee..5aa65401b9aa9ae38e5e097a6529fa2fcd51206b 100644 (file)
@@ -886,17 +886,23 @@ class OC_Util {
         * checking the existence of the ".ocdata" file.
         *
         * @param string $dataDirectory data directory path
-        * @return bool true if the data directory is valid, false otherwise
+        * @return array errors found
         */
        public static function checkDataDirectoryValidity($dataDirectory) {
                $l = \OC::$server->getL10N('lib');
-               $errors = array();
+               $errors = [];
+               if (!self::runningOnWindows() && $dataDirectory[0] !== '/') {
+                       $errors[] = [
+                               'error' => $l->t('Data directory (%s) must be an absolute path', [$dataDirectory]),
+                               'hint' => $l->t('Check the value of "datadirectory" in your configuration')
+                       ];
+               }
                if (!file_exists($dataDirectory . '/.ocdata')) {
-                       $errors[] = array(
-                               'error' => $l->t('Data directory (%s) is invalid', array($dataDirectory)),
+                       $errors[] = [
+                               'error' => $l->t('Data directory (%s) is invalid', [$dataDirectory]),
                                'hint' => $l->t('Please check that the data directory contains a file' .
                                        ' ".ocdata" in its root.')
-                       );
+                       ];
                }
                return $errors;
        }
index 4082c28f05076c98b217a88e4c80c4a10cd16c65..7d9064e0a2fcdd4fa969c193756daa5473ac0b68 100644 (file)
@@ -419,6 +419,25 @@ class Test_Util extends \Test\TestCase {
 
                $this->assertFalse(\OCP\Util::needUpgrade());
        }
+
+       public function testCheckDataDirectoryValidity() {
+               $dataDir = \OCP\Files::tmpFolder();
+               touch($dataDir . '/.ocdata');
+               $errors = \OC_Util::checkDataDirectoryValidity($dataDir);
+               $this->assertEmpty($errors);
+               \OCP\Files::rmdirr($dataDir);
+
+               $dataDir = \OCP\Files::tmpFolder();
+               // no touch
+               $errors = \OC_Util::checkDataDirectoryValidity($dataDir);
+               $this->assertNotEmpty($errors);
+               \OCP\Files::rmdirr($dataDir);
+
+               if (!\OC_Util::runningOnWindows()) {
+                       $errors = \OC_Util::checkDataDirectoryValidity('relative/path');
+                       $this->assertNotEmpty($errors);
+               }
+       }
 }
 
 /**