summaryrefslogtreecommitdiffstats
path: root/lib/private/files
diff options
context:
space:
mode:
authorJoas Schilling <nickvergessen@gmx.de>2014-08-25 14:29:07 +0200
committerJoas Schilling <nickvergessen@gmx.de>2014-08-25 15:06:12 +0200
commit1846aebfff14971d4c99a04cfe1a90a77c7591ba (patch)
tree16918132cae4ad742baebfd041143de3e6e495b4 /lib/private/files
parentb861e1d69670c023f48c621d1c6bc07016f5400d (diff)
downloadnextcloud-server-1846aebfff14971d4c99a04cfe1a90a77c7591ba.tar.gz
nextcloud-server-1846aebfff14971d4c99a04cfe1a90a77c7591ba.zip
Use md5() of the original name instead of uniqid() for slugifying
Previously we used uniqid() here. However this means that the behaviour is not reproducable, so when uploading files into a "empty" folder, the folders name is different. If there would be a md5() hash collition, the deduplicate check will spot this and append an index later, so this should not be a problem. Fix #6722
Diffstat (limited to 'lib/private/files')
-rw-r--r--lib/private/files/mapper.php13
1 files changed, 12 insertions, 1 deletions
diff --git a/lib/private/files/mapper.php b/lib/private/files/mapper.php
index 93f6f9bab30..94dda807c2b 100644
--- a/lib/private/files/mapper.php
+++ b/lib/private/files/mapper.php
@@ -216,6 +216,7 @@ class Mapper
* @return string
*/
private function slugify($text) {
+ $originalText = $text;
// replace non letter or digits or dots by -
$text = preg_replace('~[^\\pL\d\.]+~u', '-', $text);
@@ -237,7 +238,17 @@ class Mapper
$text = preg_replace('~\.+$~', '', $text);
if (empty($text)) {
- return uniqid();
+ /**
+ * Item slug would be empty. Previously we used uniqid() here.
+ * However this means that the behaviour is not reproducible, so
+ * when uploading files into a "empty" folder, the folders name is
+ * different.
+ *
+ * If there would be a md5() hash collision, the deduplicate check
+ * will spot this and append an index later, so this should not be
+ * a problem.
+ */
+ return md5($originalText);
}
return $text;