From 34ec46571701d639d9bc542b2d19f87a21a83648 Mon Sep 17 00:00:00 2001 From: Samuel Mehrbrodt Date: Mon, 4 Mar 2019 09:38:02 +0100 Subject: [PATCH] Check svg URLs before exporting Change-Id: I3b86b6b82318b0d201c3d7db516664520eb47bed Reviewed-on: https://gerrit.libreoffice.org/68668 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt --- filter/source/svg/svgexport.cxx | 20 ++++++++++++------ sd/qa/unit/SVGExportTests.cxx | 15 +++++++++++++ .../unit/data/odp/textbox-link-javascript.odp | Bin 0 -> 23573 bytes 3 files changed, 28 insertions(+), 7 deletions(-) create mode 100644 sd/qa/unit/data/odp/textbox-link-javascript.odp diff --git a/filter/source/svg/svgexport.cxx b/filter/source/svg/svgexport.cxx index c6f9ce9bd015..d5cb95f732ef 100644 --- a/filter/source/svg/svgexport.cxx +++ b/filter/source/svg/svgexport.cxx @@ -47,6 +47,7 @@ #include #include #include +#include #include #include #include @@ -1951,13 +1952,18 @@ bool SVGFilter::implExportShape( const Reference< css::drawing::XShape >& rxShap if( !aBookmark.isEmpty() ) { - mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, "xlink:href", aBookmark); - SvXMLElementExport alinkA( *mpSVGExport, XML_NAMESPACE_NONE, "a", true, true ); - mpSVGWriter->WriteMetaFile( aTopLeft, aSize, rMtf, - 0xffffffff, - pElementId, - &rxShape, - pEmbeddedBitmapsMtf ); + INetURLObject aINetURLObject(aBookmark); + if (!aINetURLObject.HasError() + && aINetURLObject.GetProtocol() != INetProtocol::Javascript) + { + mpSVGExport->AddAttribute( XML_NAMESPACE_NONE, "xlink:href", aBookmark); + SvXMLElementExport alinkA( *mpSVGExport, XML_NAMESPACE_NONE, "a", true, true ); + mpSVGWriter->WriteMetaFile( aTopLeft, aSize, rMtf, + 0xffffffff, + pElementId, + &rxShape, + pEmbeddedBitmapsMtf ); + } } else { diff --git a/sd/qa/unit/SVGExportTests.cxx b/sd/qa/unit/SVGExportTests.cxx index 9afc5cb42a01..400d604e786c 100644 --- a/sd/qa/unit/SVGExportTests.cxx +++ b/sd/qa/unit/SVGExportTests.cxx @@ -110,8 +110,23 @@ public: assertXPath(svgDoc, MAKE_PATH_STRING( /SVG_SVG/SVG_G[2]/SVG_G/SVG_G/SVG_G/SVG_G/SVG_G[2]/SVG_G/SVG_TEXT/SVG_TSPAN ), "text-decoration", "line-through"); } + void testSVGExportJavascriptURL() + { + executeExport("textbox-link-javascript.odp"); + + xmlDocPtr svgDoc = parseXml(maTempFile); + CPPUNIT_ASSERT(svgDoc); + + // There should be only one child (no link to javascript url) + assertXPathChildren(svgDoc, + MAKE_PATH_STRING(/ SVG_SVG / SVG_G[2] / SVG_G / SVG_G / SVG_G / SVG_G + / SVG_G[4] / SVG_G), + 1); + } + CPPUNIT_TEST_SUITE(SdSVGFilterTest); CPPUNIT_TEST(testSVGExportTextDecorations); + CPPUNIT_TEST(testSVGExportJavascriptURL); CPPUNIT_TEST_SUITE_END(); }; diff --git a/sd/qa/unit/data/odp/textbox-link-javascript.odp b/sd/qa/unit/data/odp/textbox-link-javascript.odp new file mode 100644 index 0000000000000000000000000000000000000000..c046cf0c7de5ee7dc79b04f228a185944e181f22 GIT binary patch literal 23573 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 literal 0 HcmV?d00001