From 2f5b78f493ce7d8961ae39f33300576646e346b0 Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Thu, 26 May 2016 12:27:53 +0200 Subject: [PATCH] OO-1807: normalize invalid filename --- .../core/commons/modules/bc/FileUploadController.java | 8 ++++++++ .../modules/bc/meta/_i18n/LocalStrings_de.properties | 1 + .../modules/bc/meta/_i18n/LocalStrings_en.properties | 1 + src/main/java/org/olat/core/util/FileUtils.java | 2 ++ 4 files changed, 12 insertions(+) diff --git a/src/main/java/org/olat/core/commons/modules/bc/FileUploadController.java b/src/main/java/org/olat/core/commons/modules/bc/FileUploadController.java index b0ea5085283..7597003e4e8 100644 --- a/src/main/java/org/olat/core/commons/modules/bc/FileUploadController.java +++ b/src/main/java/org/olat/core/commons/modules/bc/FileUploadController.java @@ -302,6 +302,14 @@ public class FileUploadController extends FormBasicController { if(fileEl == source) { if(metaDataCtr != null) { String filename = fileEl.getUploadFileName(); + if(!FileUtils.validateFilename(filename)) { + String suffix = FileUtils.getFileSuffix(filename); + if(suffix != null && suffix.length() > 0) { + filename = filename.substring(0, filename.length() - suffix.length() - 1); + } + filename = FileUtils.normalizeFilename(filename) + "." + suffix; + metaDataCtr.getFilenameEl().setExampleKey("mf.filename.warning", null); + } metaDataCtr.setFilename(filename); } } diff --git a/src/main/java/org/olat/core/commons/modules/bc/meta/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/core/commons/modules/bc/meta/_i18n/LocalStrings_de.properties index 11c37781314..ea72b9a004f 100644 --- a/src/main/java/org/olat/core/commons/modules/bc/meta/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/core/commons/modules/bc/meta/_i18n/LocalStrings_de.properties @@ -14,6 +14,7 @@ mf.error.filename.exists=Ein Objekt mit gleichem Namen existiert bereits. mf.error.filename.invalidchars=Der Name des Objektes enth\u00E4lt ung\u00FCltige Zeichen. mf.file=Datei mf.filename=Dateiname +mf.filename.warning=<i class="o_icon o_icon_warn"> </i> Dieser Dateiname enth\u00E4lt unzul\u00E4ssige Zeichen und die wurden entfernt. mf.header=Metadaten Datei/Ordner mf.language=Sprache mf.lastModified=Datum letzte \u00C4nderung diff --git a/src/main/java/org/olat/core/commons/modules/bc/meta/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/core/commons/modules/bc/meta/_i18n/LocalStrings_en.properties index 8a20a599602..aa2ac8587b1 100644 --- a/src/main/java/org/olat/core/commons/modules/bc/meta/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/core/commons/modules/bc/meta/_i18n/LocalStrings_en.properties @@ -14,6 +14,7 @@ mf.error.filename.exists=An object with that name already exists. mf.error.filename.invalidchars=The object's name contains invalid characters. mf.file=File mf.filename=File name +mf.filename.warning=<i class="o_icon o_icon_warn"> </i> This file name contains invalid characters and they were removed. mf.header=Metadata file/folder mf.language=Language mf.lastModified=Last modified\: diff --git a/src/main/java/org/olat/core/util/FileUtils.java b/src/main/java/org/olat/core/util/FileUtils.java index aae8b418a19..420739154ce 100644 --- a/src/main/java/org/olat/core/util/FileUtils.java +++ b/src/main/java/org/olat/core/util/FileUtils.java @@ -852,6 +852,8 @@ public class FileUtils { return nameSanitized; } + + /** * Creates a new directory in the specified directory, using the given prefix and suffix strings to generate its name. * It uses File.createTempFile() and should provide a unique name. -- GitLab