Use regex to detect part files

This commit is contained in:
Vincent Petry 2017-03-24 11:28:54 +01:00 committed by Joas Schilling
parent 327094d557
commit 1c771c097a
No known key found for this signature in database
GPG Key ID: E166FD8976B3BAC8
2 changed files with 44 additions and 34 deletions

View File

@ -1389,8 +1389,8 @@ class OC_Util {
return false;
}
$path_parts = pathinfo($trimmed);
if ($path_parts['extension'] === 'part') {
// detect part files
if (preg_match('/' . \OCP\Files\FileInfo::BLACKLIST_FILES_REGEX . '/', $trimmed) !== 0) {
return false;
}

View File

@ -204,41 +204,51 @@ class UtilTest extends \Test\TestCase {
}
public function filenameValidationProvider() {
return array(
return [
// valid names
array('boringname', true),
array('something.with.extension', true),
array('now with spaces', true),
array('.a', true),
array('..a', true),
array('.dotfile', true),
array('single\'quote', true),
array(' spaces before', true),
array('spaces after ', true),
array('allowed chars including the crazy ones $%&_-^@!,()[]{}=;#', true),
array('汉字也能用', true),
array('und Ümläüte sind auch willkommen', true),
['boringname', true],
['something.with.extension', true],
['now with spaces', true],
['.a', true],
['..a', true],
['.dotfile', true],
['single\'quote', true],
[' spaces before', true],
['spaces after ', true],
['allowed chars including the crazy ones $%&_-^@!,()[]{}=;#', true],
['汉字也能用', true],
['und Ümläüte sind auch willkommen', true],
// disallowed names
array('', false),
array(' ', false),
array('.', false),
array('..', false),
array('back\\slash', false),
array('sl/ash', false),
array('lt<lt', true),
array('gt>gt', true),
array('col:on', true),
array('double"quote', true),
array('pi|pe', true),
array('dont?ask?questions?', true),
array('super*star', true),
array('new\nline', false),
['', false],
[' ', false],
['.', false],
['..', false],
['back\\slash', false],
['sl/ash', false],
['lt<lt', true],
['gt>gt', true],
['col:on', true],
['double"quote', true],
['pi|pe', true],
['dont?ask?questions?', true],
['super*star', true],
['new\nline', false],
// better disallow these to avoid unexpected trimming to have side effects
array(' ..', false),
array('.. ', false),
array('. ', false),
array(' .', false),
);
[' ..', false],
['.. ', false],
['. ', false],
[' .', false],
// part files not allowed
['.part', false],
['notallowed.part', false],
['neither.filepart', false],
// part in the middle is ok
['super movie part one.mkv', true],
['super.movie.part.mkv', true],
];
}
/**