Use regex to detect part files

pull/4526/head
Vincent Petry 9 years ago committed by Joas Schilling
parent 327094d557
commit 1c771c097a
No known key found for this signature in database
GPG Key ID: E166FD8976B3BAC8
  1. 4
      lib/private/legacy/util.php
  2. 74
      tests/lib/UtilTest.php

@ -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;
}

@ -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],
];
}
/**

Loading…
Cancel
Save