Kaydet (Commit) ae1f34be authored tarafından Damjan Jovanovic's avatar Damjan Jovanovic

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

Patch by: me
üst 79bfa972
...@@ -45,6 +45,7 @@ ...@@ -45,6 +45,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>
...@@ -1060,14 +1061,29 @@ InputStreamTransformer::InputStreamTransformer( URLParameter* urlParam, ...@@ -1060,14 +1061,29 @@ 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 = NULL;
if (res) xsltTransformContextPtr transformContext = xsltNewTransformContext(cur, doc);
if (transformContext)
{ {
xmlChar *doc_txt_ptr=0; xsltSecurityPrefsPtr securityPrefs = xsltNewSecurityPrefs();
int doc_txt_len; if (securityPrefs)
xsltSaveResultToString(&doc_txt_ptr, &doc_txt_len, res, cur); {
addToBuffer((const char*)doc_txt_ptr, doc_txt_len); xsltSetSecurityPrefs(securityPrefs, XSLT_SECPREF_READ_FILE, xsltSecurityAllow);
xmlFree(doc_txt_ptr); if (xsltSetCtxtSecurityPrefs(securityPrefs, transformContext) == 0)
{
res = xsltApplyStylesheetUser(cur, doc, parameter, NULL, NULL, transformContext);
if (res)
{
xmlChar *doc_txt_ptr=0;
int doc_txt_len;
xsltSaveResultToString(&doc_txt_ptr, &doc_txt_len, res, cur);
addToBuffer((const char*)doc_txt_ptr, doc_txt_len);
xmlFree(doc_txt_ptr);
}
}
xsltFreeSecurityPrefs(securityPrefs);
}
xsltFreeTransformContext(transformContext);
} }
xmlPopInputCallbacks(); //filePatch xmlPopInputCallbacks(); //filePatch
xmlPopInputCallbacks(); //helpPatch xmlPopInputCallbacks(); //helpPatch
......
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