From 2b33300d79a382af4b8bafb8bfd49d34249b7d0e Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Tue, 9 Feb 2021 18:41:14 +0100 Subject: [PATCH] :bug: Fix unexpected exception on uploading invalid svg file. --- backend/src/app/svgparse.clj | 9 +++++++-- frontend/src/app/main/data/workspace/persistence.cljs | 3 +++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/backend/src/app/svgparse.clj b/backend/src/app/svgparse.clj index f7a7c0ce7..f9d658663 100644 --- a/backend/src/app/svgparse.clj +++ b/backend/src/app/svgparse.clj @@ -121,11 +121,16 @@ (defn parse [data] - (with-open [istream (IOUtils/toInputStream data "UTF-8")] - (xml/parse istream))) + (try + (with-open [istream (IOUtils/toInputStream data "UTF-8")] + (xml/parse istream)) + (catch org.xml.sax.SAXParseException _e + (ex/raise :type :validation + :code :invalid-svg-file)))) (defn process-request [{:keys [svgc] :as cfg} body] (let [data (slurp body) data (svgc data)] (parse data))) + diff --git a/frontend/src/app/main/data/workspace/persistence.cljs b/frontend/src/app/main/data/workspace/persistence.cljs index 66f147f4e..c8b260b46 100644 --- a/frontend/src/app/main/data/workspace/persistence.cljs +++ b/frontend/src/app/main/data/workspace/persistence.cljs @@ -421,6 +421,9 @@ (if (ex/ex-info? error) (on-error* (ex-data error)) (cond + (= (:code error) :invalid-svg-file) + (rx/of (dm/error (tr "errors.media-type-not-allowed"))) + (= (:code error) :media-type-not-allowed) (rx/of (dm/error (tr "errors.media-type-not-allowed")))