diff options
author | Caolán McNamara <caolanm@redhat.com> | 2018-10-18 20:39:23 +0100 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2018-11-13 21:06:32 +0100 |
commit | 691763cee46a2267e53caf75f73fd5a2beb1430f (patch) | |
tree | d9d9fbbc7154be0027c4bded13b166855de6e38a | |
parent | fcea07243eb4c2aea3db928bce69c53ce19b3f65 (diff) |
keep pyuno script processing below base uri
Change-Id: Icc13fb7193fb1e7c50e0df286161a10b4ed636c7
Reviewed-on: https://gerrit.libreoffice.org/61969
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
(cherry picked from commit b1c85cdb37a47998f8ab135fbc96f186334b171c)
(cherry picked from commit a9d81dd30d809b9c5ce2d3e4752039f19be70494)
(cherry picked from commit 4c0d9942ebd56e83e83ac3079528e62ce5644008)
-rw-r--r-- | scripting/source/pyprov/pythonscript.py | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/scripting/source/pyprov/pythonscript.py b/scripting/source/pyprov/pythonscript.py index 68a1bacd1462..d96a7afcba6f 100644 --- a/scripting/source/pyprov/pythonscript.py +++ b/scripting/source/pyprov/pythonscript.py @@ -25,6 +25,7 @@ import imp import time import ast import platform +from com.sun.star.uri.RelativeUriExcessParentSegments import RETAIN try: unicode @@ -212,8 +213,33 @@ class MyUriHelper: def scriptURI2StorageUri( self, scriptURI ): try: - myUri = self.m_uriRefFac.parse(scriptURI) - ret = self.m_baseUri + "/" + myUri.getName().replace( "|", "/" ) + # base path to the python script location + sBaseUri = self.m_baseUri + "/" + xBaseUri = self.m_uriRefFac.parse(sBaseUri) + + # path to the .py file + "$functionname, arguments, etc + xStorageUri = self.m_uriRefFac.parse(scriptURI) + sStorageUri = xStorageUri.getName().replace( "|", "/" ); + + # path to the .py file, relative to the base + sFileUri = sStorageUri[0:sStorageUri.find("$")] + xFileUri = self.m_uriRefFac.parse(sFileUri) + if not xFileUri: + message = "pythonscript: invalid relative uri '" + sFileUri+ "'" + log.debug( message ) + raise RuntimeException( message ) + + # absolute path to the .py file + xAbsScriptUri = self.m_uriRefFac.makeAbsolute(xBaseUri, xFileUri, True, RETAIN) + sAbsScriptUri = xAbsScriptUri.getUriReference() + + # ensure py file is under the base path + if not sAbsScriptUri.startswith(sBaseUri): + message = "pythonscript: storage uri '" + sAbsScriptUri + "' not in base uri '" + self.m_baseUri + "'" + log.debug( message ) + raise RuntimeException( message ) + + ret = sBaseUri + sStorageUri log.debug( "converting scriptURI="+scriptURI + " to storageURI=" + ret ) return ret except UnoException as e: |