Commit 1511a42d authored by Robin McCorkell's avatar Robin McCorkell
Browse files

Check for relative datadirectory path

parent d55b88c0
...@@ -886,17 +886,23 @@ class OC_Util { ...@@ -886,17 +886,23 @@ class OC_Util {
* checking the existence of the ".ocdata" file. * checking the existence of the ".ocdata" file.
* *
* @param string $dataDirectory data directory path * @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) { public static function checkDataDirectoryValidity($dataDirectory) {
$l = \OC::$server->getL10N('lib'); $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')) { if (!file_exists($dataDirectory . '/.ocdata')) {
$errors[] = array( $errors[] = [
'error' => $l->t('Data directory (%s) is invalid', array($dataDirectory)), 'error' => $l->t('Data directory (%s) is invalid', [$dataDirectory]),
'hint' => $l->t('Please check that the data directory contains a file' . 'hint' => $l->t('Please check that the data directory contains a file' .
' ".ocdata" in its root.') ' ".ocdata" in its root.')
); ];
} }
return $errors; return $errors;
} }
......
...@@ -419,6 +419,25 @@ class Test_Util extends \Test\TestCase { ...@@ -419,6 +419,25 @@ class Test_Util extends \Test\TestCase {
$this->assertFalse(\OCP\Util::needUpgrade()); $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);
}
}
} }
/** /**
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment