Configure SAXParserFactory to avoid XXE references

#KT-51519 Fixed
This commit is contained in:
Alexander Udalov
2022-03-08 15:02:45 +01:00
parent d01e6b61a3
commit 9c78d57de2
2 changed files with 10 additions and 2 deletions
@@ -85,7 +85,12 @@ public class ModuleXmlParser {
private ModuleChunk parse(@NotNull InputStream xml) {
try {
setCurrentState(initial);
SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
factory.setFeature("http://xml.org/sax/features/external-general-entities", false);
factory.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
factory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
SAXParser saxParser = factory.newSAXParser();
saxParser.parse(xml, new DelegatedSaxHandler() {
@NotNull
@Override
@@ -30,7 +30,6 @@ import org.xml.sax.SAXException
import org.xml.sax.helpers.DefaultHandler
import java.io.IOException
import java.io.Reader
import java.util.*
import javax.xml.parsers.SAXParserFactory
object CompilerOutputParser {
@@ -59,6 +58,10 @@ object CompilerOutputParser {
}
try {
val factory = SAXParserFactory.newInstance()
factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true)
factory.setFeature("http://xml.org/sax/features/external-general-entities", false)
factory.setFeature("http://xml.org/sax/features/external-parameter-entities", false)
factory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false)
val parser = factory.newSAXParser()
parser.parse(InputSource(wrappingReader), CompilerOutputSAXHandler(messageCollector, collector))
}