Kaydet (Commit) 99c59c59 authored tarafından Damjan Jovanovic's avatar Damjan Jovanovic Kaydeden (comit) Michael Stahl

Set up our own libxslt security context in xmlhelp, as per #i117643.

Patch by: me

(cherry picked from commit ae1f34be)

Change-Id: I0e5277b17243f6b8f5f4303206cf446b10dd0aef
Reviewed-on: https://gerrit.libreoffice.org/61597Reviewed-by: 's avatarMichael Stahl <Michael.Stahl@cib.de>
Tested-by: 's avatarMichael Stahl <Michael.Stahl@cib.de>
üst de29c77c
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
#include <libxslt/xslt.h> #include <libxslt/xslt.h>
#include <libxslt/transform.h> #include <libxslt/transform.h>
#include <libxslt/xsltutils.h> #include <libxslt/xsltutils.h>
#include <libxslt/security.h>
#include "db.hxx" #include "db.hxx"
#include <com/sun/star/io/XActiveDataSink.hpp> #include <com/sun/star/io/XActiveDataSink.hpp>
#include <com/sun/star/io/XInputStream.hpp> #include <com/sun/star/io/XInputStream.hpp>
...@@ -847,7 +848,17 @@ InputStreamTransformer::InputStreamTransformer( URLParameter* urlParam, ...@@ -847,7 +848,17 @@ InputStreamTransformer::InputStreamTransformer( URLParameter* urlParam,
xmlDocPtr doc = xmlParseFile("vnd.sun.star.zip:/"); xmlDocPtr doc = xmlParseFile("vnd.sun.star.zip:/");
xmlDocPtr res = xsltApplyStylesheet(cur, doc, parameter); xmlDocPtr res = nullptr;
xsltTransformContextPtr transformContext = xsltNewTransformContext(cur, doc);
if (transformContext)
{
xsltSecurityPrefsPtr securityPrefs = xsltNewSecurityPrefs();
if (securityPrefs)
{
xsltSetSecurityPrefs(securityPrefs, XSLT_SECPREF_READ_FILE, xsltSecurityAllow);
if (xsltSetCtxtSecurityPrefs(securityPrefs, transformContext) == 0)
{
res = xsltApplyStylesheetUser(cur, doc, parameter, nullptr, nullptr, transformContext);
if (res) if (res)
{ {
xmlChar *doc_txt_ptr=nullptr; xmlChar *doc_txt_ptr=nullptr;
...@@ -856,6 +867,11 @@ InputStreamTransformer::InputStreamTransformer( URLParameter* urlParam, ...@@ -856,6 +867,11 @@ InputStreamTransformer::InputStreamTransformer( URLParameter* urlParam,
addToBuffer(reinterpret_cast<char*>(doc_txt_ptr), doc_txt_len); addToBuffer(reinterpret_cast<char*>(doc_txt_ptr), doc_txt_len);
xmlFree(doc_txt_ptr); xmlFree(doc_txt_ptr);
} }
}
xsltFreeSecurityPrefs(securityPrefs);
}
xsltFreeTransformContext(transformContext);
}
xmlPopInputCallbacks(); //filePatch xmlPopInputCallbacks(); //filePatch
xmlPopInputCallbacks(); //helpPatch xmlPopInputCallbacks(); //helpPatch
xmlPopInputCallbacks(); //zipMatch xmlPopInputCallbacks(); //zipMatch
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment