Validate the file extensions using lower case
authorAlexander Ebert <ebert@woltlab.com>
Mon, 30 Sep 2024 14:30:04 +0000 (16:30 +0200)
committerAlexander Ebert <ebert@woltlab.com>
Mon, 30 Sep 2024 14:30:04 +0000 (16:30 +0200)
Previously a check could fail if, for example, “.png” is allowed but the uploaded file uses the uppercase “.PNG“ extension.

ts/WoltLabSuite/Core/Component/File/Upload.ts
wcfsetup/install/files/js/WoltLabSuite/Core/Component/File/Upload.js

index a44178222b1087c49b20df62f3b41cde11df0149..8f7fe935e43818cb35d253086a4cd84d35710ae5 100644 (file)
@@ -239,11 +239,11 @@ function validateFileSize(element: WoltlabCoreFileUploadElement, file: File): bo
 }
 
 function validateFileExtension(element: WoltlabCoreFileUploadElement, file: File): boolean {
-  const fileExtensions = (element.dataset.fileExtensions || "*").split(",");
+  const fileExtensions = (element.dataset.fileExtensions || "*").toLowerCase().split(",");
   for (const fileExtension of fileExtensions) {
     if (fileExtension === "*") {
       return true;
-    } else if (file.name.endsWith(fileExtension)) {
+    } else if (file.name.toLowerCase().endsWith(fileExtension)) {
       return true;
     }
   }
index 157795b9358eb43d7a8de530a0bb2d2925a76209..227c8713445238973f8a15de24d7aa73d95e4b25 100644 (file)
@@ -157,12 +157,12 @@ define(["require", "exports", "tslib", "WoltLabSuite/Core/Helper/Selector", "Wol
         return false;
     }
     function validateFileExtension(element, file) {
-        const fileExtensions = (element.dataset.fileExtensions || "*").split(",");
+        const fileExtensions = (element.dataset.fileExtensions || "*").toLowerCase().split(",");
         for (const fileExtension of fileExtensions) {
             if (fileExtension === "*") {
                 return true;
             }
-            else if (file.name.endsWith(fileExtension)) {
+            else if (file.name.toLowerCase().endsWith(fileExtension)) {
                 return true;
             }
         }