From ad4c731c4c4f84f998013c7f4632b23739d16ec4 Mon Sep 17 00:00:00 2001 From: Lukas Reschke <lukas@owncloud.com> Date: Thu, 30 Jul 2015 11:22:14 +0200 Subject: [PATCH] Correct regular expressions Previously the regex was only matching on single characters. Meaning that file names such as ":+1:.txt" where possible while ":+1:" alone never was. This check apparently never worked as expected. --- lib/private/files/view.php | 4 ++-- tests/lib/files/pathverificationtest.php | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/private/files/view.php b/lib/private/files/view.php index cb3c05d2bca..1a6be73d5bb 100644 --- a/lib/private/files/view.php +++ b/lib/private/files/view.php @@ -1656,11 +1656,11 @@ class View { } // verify database - e.g. mysql only 3-byte chars - if (preg_match('%^(?: + if (preg_match('%(?: \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3 | [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15 | \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16 -)*$%xs', $fileName)) { +)%xs', $fileName)) { throw new InvalidPathException($l10n->t('4-byte characters are not supported in file names')); } diff --git a/tests/lib/files/pathverificationtest.php b/tests/lib/files/pathverificationtest.php index b59aceba7b1..f7d5f057c14 100644 --- a/tests/lib/files/pathverificationtest.php +++ b/tests/lib/files/pathverificationtest.php @@ -83,6 +83,8 @@ class PathVerification extends \Test\TestCase { return [ // this is the monkey emoji - http://en.wikipedia.org/w/index.php?title=%F0%9F%90%B5&redirect=no ['ðŸµ'], + ['ðŸµ.txt'], + ['txt.💩'], ]; } -- GitLab