summaryrefslogtreecommitdiffstats
path: root/cui
diff options
context:
space:
mode:
authorMuhammet Kara <muhammet.kara@collabora.com>2021-05-29 18:17:54 +0300
committerAndras Timar <andras.timar@collabora.com>2021-06-04 15:46:49 +0200
commit0d22077bb1651d99b4b8985297260cbbc8cd65f9 (patch)
treec359ae48c990c4b443b8fcfcb7abafc2c6dea61a /cui
parentAvoid empty std::map constructor (diff)
downloadcore-0d22077bb1651d99b4b8985297260cbbc8cd65f9.tar.gz
core-0d22077bb1651d99b4b8985297260cbbc8cd65f9.zip
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> (cherry picked from commit e98b0891d6e0f1d6be4e4a4761bd1ab16bfab85c) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116168 Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Diffstat (limited to 'cui')
-rw-r--r--cui/source/dialogs/AdditionsDialog.cxx11
1 files changed, 10 insertions, 1 deletions
diff --git a/cui/source/dialogs/AdditionsDialog.cxx b/cui/source/dialogs/AdditionsDialog.cxx
index 8bd5dee65222..a80e8562c398 100644
--- a/cui/source/dialogs/AdditionsDialog.cxx
+++ b/cui/source/dialogs/AdditionsDialog.cxx
@@ -45,6 +45,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>
@@ -124,7 +125,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)