diff options
author | Muhammet Kara <muhammet.kara@collabora.com> | 2021-05-29 18:17:54 +0300 |
---|---|---|
committer | Muhammet Kara <muhammet.kara@collabora.com> | 2021-05-30 07:11:05 +0200 |
commit | e98b0891d6e0f1d6be4e4a4761bd1ab16bfab85c (patch) | |
tree | def12c49ecb0a0a4b8bf4965b4a096955b7e6e54 /cui | |
parent | 0d4e5630ac638e555a4a3261b3baa6d271cf5a70 (diff) |
tdf#136292: Fix crash on invalid JSON from the extensions API
Change-Id: I91ed555f93173dee10e87025b231560693be50b5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116390
Tested-by: Jenkins
Reviewed-by: Muhammet Kara <muhammet.kara@collabora.com>
Diffstat (limited to 'cui')
-rw-r--r-- | cui/source/dialogs/AdditionsDialog.cxx | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/cui/source/dialogs/AdditionsDialog.cxx b/cui/source/dialogs/AdditionsDialog.cxx index 344bcf5f9ba3..5ca2d10051ec 100644 --- a/cui/source/dialogs/AdditionsDialog.cxx +++ b/cui/source/dialogs/AdditionsDialog.cxx @@ -52,6 +52,7 @@ #include <com/sun/star/task/XInteractionApprove.hpp> #include <orcus/json_document_tree.hpp> +#include <orcus/json_parser.hpp> #include <orcus/config.hpp> #include <orcus/pstring.hpp> @@ -131,7 +132,15 @@ void parseResponse(const std::string& rResponse, std::vector<AdditionInfo>& aAdd if (rResponse.empty()) return; - aJsonDoc.load(rResponse, aConfig); + try + { + aJsonDoc.load(rResponse, aConfig); + } + catch (const orcus::json::parse_error&) + { + TOOLS_WARN_EXCEPTION("cui.dialogs", "Invalid JSON file from the extensions API"); + return; + } auto aDocumentRoot = aJsonDoc.get_document_root(); if (aDocumentRoot.type() != orcus::json::node_t::object) |