a Java class path entry has to be a plain local file URL
with no host and an absolute path follow on from "translate only file URLs" (Change-Id I41076b8af670d673bf29b14c02db0c66744feb0b) Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com> Change-Id: I6025f3e627c51d83479e7f79a53841384b326442 Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/13322 Tested-by: Jenkins CPCI <releng@collaboraoffice.com> Reviewed-by: Stephan Bergmann <stephan.bergmann@collabora.com> Reviewed-by: Michael Stahl <michael.stahl@collabora.com> (cherry picked from commit cb4680770e2d558fa474fb7d3e3483885941d70a) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211548 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
This commit is contained in:
committed by
Xisco Fauli
parent
8937f0d490
commit
5026a97e2e
@@ -33,6 +33,7 @@
|
||||
#include <com/sun/star/uri/XVndSunStarExpandUrlReference.hpp>
|
||||
#include <com/sun/star/util/theMacroExpander.hpp>
|
||||
#include <cppuhelper/exc_hlp.hxx>
|
||||
#include <rtl/uri.hxx>
|
||||
#include <rtl/ustring.hxx>
|
||||
#include <sal/types.h>
|
||||
#include <o3tl/string_view.hxx>
|
||||
@@ -79,7 +80,21 @@ jobjectArray jvmaccess::ClassPath::translateToUrls(
|
||||
}
|
||||
css::uno::Reference< css::uri::XUriReference > uriRef(
|
||||
css::uri::UriReferenceFactory::create(context)->parse(url));
|
||||
if (!uriRef.is() || !uriRef->getScheme().equalsIgnoreAsciiCase("file"))
|
||||
bool bLocal = uriRef.is() && uriRef->getScheme().equalsIgnoreAsciiCase("file");
|
||||
if (bLocal && uriRef->hasAuthority())
|
||||
{
|
||||
OUString aAuthority(uriRef->getAuthority());
|
||||
bLocal = aAuthority.isEmpty() || aAuthority.equalsIgnoreAsciiCase("localhost");
|
||||
}
|
||||
if (bLocal)
|
||||
{
|
||||
// Java reads a path that starts with two separators as a network share name.
|
||||
OUString aPath(rtl::Uri::decode(uriRef->getPath(), rtl_UriDecodeWithCharset,
|
||||
RTL_TEXTENCODING_UTF8));
|
||||
bLocal = aPath.getLength() >= 2 && aPath[0] == '/' && aPath[1] != '/'
|
||||
&& aPath[1] != '\\';
|
||||
}
|
||||
if (!bLocal)
|
||||
{
|
||||
throw css::lang::IllegalArgumentException(
|
||||
"non-local Java class path entry: " + url,
|
||||
|
||||
Reference in New Issue
Block a user