MDL-35238 Be more verbose if the tilde character is used in TYPE_PATH script options

The tilde character is not generally supported in Moodle. Previously it
was just removed silently and it was difficult to realize what was going
on.
This commit is contained in:
David Mudrák 2012-11-07 21:54:22 +01:00
parent ec8e1cbce6
commit 8ffa8d7e48
2 changed files with 12 additions and 0 deletions

View File

@ -258,6 +258,9 @@ class input_manager extends singleton_pattern {
return (int)$raw;
case input_manager::TYPE_PATH:
if (strpos($raw, '~') !== false) {
throw new invalid_option_exception('Using the tilde (~) character in paths is not supported');
}
$raw = str_replace('\\', '/', $raw);
$raw = preg_replace('~[[:cntrl:]]|[&<>"`\|\':]~u', '', $raw);
$raw = preg_replace('~\.\.+~', '', $raw);

View File

@ -174,6 +174,15 @@ class mdeploytest extends PHPUnit_Framework_TestCase {
$input->cast_value($invalid, input_manager::TYPE_MD5); // must throw exception
}
/**
* @expectedException invalid_option_exception
*/
public function test_cast_tilde_in_path() {
$input = testable_input_manager::instance();
$invalid = '~/public_html/moodle_dev';
$input->cast_value($invalid, input_manager::TYPE_PATH); // must throw exception
}
public function test_has_option() {
$provider = input_fake_provider::instance();