From ec57f6eca37192ada29cda1d37ec192472c0d9ef Mon Sep 17 00:00:00 2001 From: Julien Nabet Date: Tue, 10 Sep 2019 21:16:43 +0200 Subject: [PATCH] tdf#127461: fix data provider crashes See bts provided in the bugtracker Change-Id: I1cc38add93446f8372c80ca45962b04bfa627923 Reviewed-on: https://gerrit.libreoffice.org/78803 Tested-by: Jenkins Reviewed-by: Julien Nabet --- sc/source/ui/dataprovider/htmldataprovider.cxx | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/sc/source/ui/dataprovider/htmldataprovider.cxx b/sc/source/ui/dataprovider/htmldataprovider.cxx index bbe6dd3c514b..b8b7b3746d2c 100644 --- a/sc/source/ui/dataprovider/htmldataprovider.cxx +++ b/sc/source/ui/dataprovider/htmldataprovider.cxx @@ -192,8 +192,21 @@ void HTMLFetchThread::execute() OString aID = OUStringToOString(maID, RTL_TEXTENCODING_UTF8); xmlXPathContextPtr pXmlXpathCtx = xmlXPathNewContext(pHtmlPtr); xmlXPathObjectPtr pXmlXpathObj = xmlXPathEvalExpression(BAD_CAST(aID.getStr()), pXmlXpathCtx); + + if (!pXmlXpathObj) + { + xmlXPathFreeContext(pXmlXpathCtx); + return; + } xmlNodeSetPtr pXmlNodes = pXmlXpathObj->nodesetval; + if (!pXmlNodes) + { + xmlXPathFreeNodeSetList(pXmlXpathObj); + xmlXPathFreeContext(pXmlXpathCtx); + return; + } + if (pXmlNodes->nodeNr == 0) { xmlXPathFreeNodeSet(pXmlNodes);