Configure SAXParserFactory to avoid XXE references
#KT-51519 Fixed
This commit is contained in:
+6
-1
@@ -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
|
||||
|
||||
+4
-1
@@ -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))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user