|
 |
b5fb7d |
From 2c71565673c4750732c7e507d2aaf9c3b1f679df Mon Sep 17 00:00:00 2001
|
|
 |
b5fb7d |
From: Stephan Bergmann <sbergman@redhat.com>
|
|
 |
b5fb7d |
Date: Tue, 6 Aug 2019 13:29:22 +0200
|
|
 |
b5fb7d |
Subject: [PATCH] Properly obtain location
|
|
 |
b5fb7d |
MIME-Version: 1.0
|
|
 |
b5fb7d |
Content-Type: text/plain; charset=UTF-8
|
|
 |
b5fb7d |
Content-Transfer-Encoding: 8bit
|
|
 |
b5fb7d |
|
|
 |
b5fb7d |
Change-Id: I9fb0d883a3623394343cd54ef61e5610544198c8
|
|
 |
b5fb7d |
Reviewed-on: https://gerrit.libreoffice.org/77019
|
|
 |
b5fb7d |
Tested-by: Jenkins
|
|
 |
b5fb7d |
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
|
 |
b5fb7d |
(cherry picked from commit a9cde2557242a0c343d99533f3ee032599c66f42)
|
|
 |
b5fb7d |
Reviewed-on: https://gerrit.libreoffice.org/77024
|
|
 |
b5fb7d |
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
 |
b5fb7d |
Reviewed-by: Michael Stahl <Michael.Stahl@cib.de>
|
|
 |
b5fb7d |
Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
|
|
 |
b5fb7d |
Tested-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com>
|
|
 |
b5fb7d |
---
|
|
 |
b5fb7d |
.../source/protocolhandler/scripthandler.cxx | 9 ++++++--
|
|
 |
b5fb7d |
sfx2/source/doc/objmisc.cxx | 21 +++++++++++--------
|
|
 |
b5fb7d |
2 files changed, 19 insertions(+), 11 deletions(-)
|
|
 |
b5fb7d |
|
|
 |
b5fb7d |
diff --git a/scripting/source/protocolhandler/scripthandler.cxx b/scripting/source/protocolhandler/scripthandler.cxx
|
|
 |
b5fb7d |
index cd82b19..1bc577b 100644
|
|
 |
b5fb7d |
--- a/scripting/source/protocolhandler/scripthandler.cxx
|
|
 |
b5fb7d |
+++ b/scripting/source/protocolhandler/scripthandler.cxx
|
|
 |
b5fb7d |
@@ -51,6 +51,7 @@
|
|
 |
b5fb7d |
#include "com/sun/star/uri/XUriReference.hpp"
|
|
 |
b5fb7d |
#include "com/sun/star/uri/UriReferenceFactory.hpp"
|
|
 |
b5fb7d |
#include "com/sun/star/uri/XVndSunStarScriptUrl.hpp"
|
|
 |
b5fb7d |
+#include <com/sun/star/uri/XVndSunStarScriptUrlReference.hpp>
|
|
 |
b5fb7d |
|
|
 |
b5fb7d |
#include <memory>
|
|
 |
b5fb7d |
|
|
 |
b5fb7d |
@@ -146,8 +147,12 @@ void SAL_CALL ScriptProtocolHandler::dispatchWithNotification(
|
|
 |
b5fb7d |
{
|
|
 |
b5fb7d |
try
|
|
 |
b5fb7d |
{
|
|
 |
b5fb7d |
- bool bIsDocumentScript = ( aURL.Complete.indexOf( "document" ) !=-1 );
|
|
 |
b5fb7d |
- // TODO: isn't this somewhat strange? This should be a test for a location=document parameter, shouldn't it?
|
|
 |
b5fb7d |
+ css::uno::Reference<css::uri::XUriReferenceFactory> urifac(
|
|
 |
b5fb7d |
+ css::uri::UriReferenceFactory::create(m_xContext));
|
|
 |
b5fb7d |
+ css::uno::Reference<css::uri::XVndSunStarScriptUrlReference> uri(
|
|
 |
b5fb7d |
+ urifac->parse(aURL.Complete), css::uno::UNO_QUERY_THROW);
|
|
 |
b5fb7d |
+ auto const loc = uri->getParameter("location");
|
|
 |
b5fb7d |
+ bool bIsDocumentScript = loc == "document";
|
|
 |
b5fb7d |
|
|
 |
b5fb7d |
if ( bIsDocumentScript )
|
|
 |
b5fb7d |
{
|
|
 |
b5fb7d |
diff --git a/sfx2/source/doc/objmisc.cxx b/sfx2/source/doc/objmisc.cxx
|
|
 |
b5fb7d |
index 24d131a..87580cb 100644
|
|
 |
b5fb7d |
--- a/sfx2/source/doc/objmisc.cxx
|
|
 |
b5fb7d |
+++ b/sfx2/source/doc/objmisc.cxx
|
|
 |
b5fb7d |
@@ -1462,19 +1462,22 @@ ErrCode SfxObjectShell::CallXScript( const Reference< XInterface >& _rxScriptCon
|
|
 |
b5fb7d |
OSL_TRACE( "in CallXScript" );
|
|
 |
b5fb7d |
ErrCode nErr = ERRCODE_NONE;
|
|
 |
b5fb7d |
|
|
 |
b5fb7d |
- bool bIsDocumentScript = ( _rScriptURL.indexOf( "location=document" ) >= 0 );
|
|
 |
b5fb7d |
- // TODO: we should parse the URL, and check whether there is a parameter with this name.
|
|
 |
b5fb7d |
- // Otherwise, we might find too much.
|
|
 |
b5fb7d |
- if ( bIsDocumentScript && !lcl_isScriptAccessAllowed_nothrow( _rxScriptContext ) )
|
|
 |
b5fb7d |
- return ERRCODE_IO_ACCESSDENIED;
|
|
 |
b5fb7d |
-
|
|
 |
b5fb7d |
- if ( UnTrustedScript(_rScriptURL) )
|
|
 |
b5fb7d |
- return ERRCODE_IO_ACCESSDENIED;
|
|
 |
b5fb7d |
-
|
|
 |
b5fb7d |
bool bCaughtException = false;
|
|
 |
b5fb7d |
Any aException;
|
|
 |
b5fb7d |
try
|
|
 |
b5fb7d |
{
|
|
 |
b5fb7d |
+ css::uno::Reference<css::uri::XUriReferenceFactory> urifac(
|
|
 |
b5fb7d |
+ css::uri::UriReferenceFactory::create(comphelper::getProcessComponentContext()));
|
|
 |
b5fb7d |
+ css::uno::Reference<css::uri::XVndSunStarScriptUrlReference> uri(
|
|
 |
b5fb7d |
+ urifac->parse(_rScriptURL), css::uno::UNO_QUERY_THROW);
|
|
 |
b5fb7d |
+ auto const loc = uri->getParameter("location");
|
|
 |
b5fb7d |
+ bool bIsDocumentScript = loc == "document";
|
|
 |
b5fb7d |
+ if ( bIsDocumentScript && !lcl_isScriptAccessAllowed_nothrow( _rxScriptContext ) )
|
|
 |
b5fb7d |
+ return ERRCODE_IO_ACCESSDENIED;
|
|
 |
b5fb7d |
+
|
|
 |
b5fb7d |
+ if ( UnTrustedScript(_rScriptURL) )
|
|
 |
b5fb7d |
+ return ERRCODE_IO_ACCESSDENIED;
|
|
 |
b5fb7d |
+
|
|
 |
b5fb7d |
// obtain/create a script provider
|
|
 |
b5fb7d |
Reference< provider::XScriptProvider > xScriptProvider;
|
|
 |
b5fb7d |
Reference< provider::XScriptProviderSupplier > xSPS( _rxScriptContext, UNO_QUERY );
|
|
 |
b5fb7d |
--
|
|
 |
b5fb7d |
2.20.1
|
|
 |
b5fb7d |
|