From d877bdb7795113623930736a3a12304b30a68f23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Fournier?= Date: Mon, 14 Dec 2020 13:35:18 +0100 Subject: [PATCH] Readd some deleted tests --- .../lang/xml/ast/internal/XmlParserImpl.java | 5 ++++ .../pmd/lang/xml/ast/XmlParserTest.java | 25 +++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/pmd-xml/src/main/java/net/sourceforge/pmd/lang/xml/ast/internal/XmlParserImpl.java b/pmd-xml/src/main/java/net/sourceforge/pmd/lang/xml/ast/internal/XmlParserImpl.java index dd94aaa7ba..fce625bb8d 100644 --- a/pmd-xml/src/main/java/net/sourceforge/pmd/lang/xml/ast/internal/XmlParserImpl.java +++ b/pmd-xml/src/main/java/net/sourceforge/pmd/lang/xml/ast/internal/XmlParserImpl.java @@ -4,6 +4,7 @@ package net.sourceforge.pmd.lang.xml.ast.internal; +import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.Reader; import java.io.StringReader; @@ -16,6 +17,7 @@ import javax.xml.parsers.ParserConfigurationException; import org.apache.commons.io.IOUtils; import org.w3c.dom.Document; import org.w3c.dom.Node; +import org.xml.sax.EntityResolver; import org.xml.sax.InputSource; import org.xml.sax.SAXException; @@ -25,6 +27,8 @@ import net.sourceforge.pmd.lang.xml.ast.XmlNode; public final class XmlParserImpl { + // never throws on unresolved resource + private static final EntityResolver SILENT_ENTITY_RESOLVER = (publicId, systemId) -> new InputSource(new ByteArrayInputStream("".getBytes())); private final Map nodeCache = new HashMap<>(); @@ -44,6 +48,7 @@ public final class XmlParserImpl { dbf.setFeature("http://xml.org/sax/features/external-general-entities", false); dbf.setFeature("http://xml.org/sax/features/external-parameter-entities", false); DocumentBuilder documentBuilder = dbf.newDocumentBuilder(); + documentBuilder.setEntityResolver(SILENT_ENTITY_RESOLVER); return documentBuilder.parse(new InputSource(new StringReader(xmlData))); } catch (ParserConfigurationException | SAXException | IOException e) { throw new ParseException(e); diff --git a/pmd-xml/src/test/java/net/sourceforge/pmd/lang/xml/ast/XmlParserTest.java b/pmd-xml/src/test/java/net/sourceforge/pmd/lang/xml/ast/XmlParserTest.java index c2dc80c646..a44de6da72 100644 --- a/pmd-xml/src/test/java/net/sourceforge/pmd/lang/xml/ast/XmlParserTest.java +++ b/pmd-xml/src/test/java/net/sourceforge/pmd/lang/xml/ast/XmlParserTest.java @@ -40,4 +40,29 @@ public class XmlParserTest extends BaseTreeDumpTest { public void testBug1518() { doTest("bug1518"); } + + + @Test + public void dtdIsNotLookedUp() { + // no exception should be thrown + XmlParsingHelper.XML.parse( + "" + + ""); + } + + @Test + public void xsdIsNotLookedUp() { + // no exception should be thrown + XmlParsingHelper.XML.parse( + " " + + "" + + ""); + } + + }