From 33ba87091d95f6cf23c89c76f3996e71c7528c6f Mon Sep 17 00:00:00 2001
From: Damien <damien.burel@maarch.org>
Date: Tue, 8 Oct 2019 16:59:09 +0200
Subject: [PATCH] FEAT #10490 TIME 0:25 Check extensions

---
 src/app/resource/controllers/ResController.php   | 7 +++++++
 src/app/resource/controllers/StoreController.php | 2 +-
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/app/resource/controllers/ResController.php b/src/app/resource/controllers/ResController.php
index 91361f82630..e6eba535335 100755
--- a/src/app/resource/controllers/ResController.php
+++ b/src/app/resource/controllers/ResController.php
@@ -74,6 +74,13 @@ class ResController
             return $response->withStatus(400)->withJson(['errors' => 'Body category_id is empty or not a string']);
         }
 
+        $file     = base64_decode($body['encodedFile']);
+        $finfo    = new \finfo(FILEINFO_MIME_TYPE);
+        $mimeType = $finfo->buffer($file);
+        if (!StoreController::isFileAllowed(['extension' => $body['format'], 'type' => $mimeType])) {
+            return $response->withStatus(400)->withJson(['errors' => _FILE_NOT_ALLOWED_INFO_1.' "'.$body['format'].'" '._FILE_NOT_ALLOWED_INFO_2.' "'. $mimeType. '" '._FILE_NOT_ALLOWED_INFO_3]);
+        }
+
         $resId = StoreController::storeResource($body);
         if (empty($resId) || !empty($resId['errors'])) {
             return $response->withStatus(500)->withJson(['errors' => '[ResController create] ' . $resId['errors']]);
diff --git a/src/app/resource/controllers/StoreController.php b/src/app/resource/controllers/StoreController.php
index 539d45712d2..b89b043850b 100755
--- a/src/app/resource/controllers/StoreController.php
+++ b/src/app/resource/controllers/StoreController.php
@@ -40,7 +40,7 @@ class StoreController
                     unset($aArgs[$column]);
                 }
             }
-            $fileContent    = base64_decode(str_replace(['-', '_'], ['+', '/'], $aArgs['encodedFile']));
+            $fileContent = base64_decode(str_replace(['-', '_'], ['+', '/'], $aArgs['encodedFile']));
 
             $storeResult = DocserverController::storeResourceOnDocServer([
                 'collId'            => 'letterbox_coll',
-- 
GitLab