From a4bdd8aa4fef5c86e1d107f91bec66005d62dd84 Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Wed, 9 Nov 2016 15:01:42 +0300 Subject: [PATCH] IDEA-144646 Billion laughs in .idea/misc.xml or other files hangs idea for some time and not open... --- .../com/intellij/openapi/util/JDOMUtil.java | 18 +++++++++++++++++- platform/util/util.iml | 1 + 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/platform/util/src/com/intellij/openapi/util/JDOMUtil.java b/platform/util/src/com/intellij/openapi/util/JDOMUtil.java index 4eaabf2d1ba2..5793ec4b6f2d 100644 --- a/platform/util/src/com/intellij/openapi/util/JDOMUtil.java +++ b/platform/util/src/com/intellij/openapi/util/JDOMUtil.java @@ -24,9 +24,12 @@ import com.intellij.util.io.URLUtil; import com.intellij.util.text.CharArrayUtil; import com.intellij.util.text.CharSequenceReader; import com.intellij.util.text.StringFactory; +import com.sun.org.apache.xerces.internal.impl.Constants; +import org.apache.xerces.util.SecurityManager; import org.jdom.*; import org.jdom.filter.Filter; import org.jdom.input.SAXBuilder; +import org.jdom.input.SAXHandler; import org.jdom.output.Format; import org.jdom.output.XMLOutputter; import org.jetbrains.annotations.Contract; @@ -34,6 +37,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.xml.sax.EntityResolver; import org.xml.sax.InputSource; +import org.xml.sax.XMLReader; import java.io.*; import java.lang.ref.SoftReference; @@ -241,7 +245,19 @@ public class JDOMUtil { SoftReference reference = ourSaxBuilder.get(); SAXBuilder saxBuilder = com.intellij.reference.SoftReference.dereference(reference); if (saxBuilder == null) { - saxBuilder = new SAXBuilder(); + saxBuilder = new SAXBuilder() { + @Override + protected void configureParser(XMLReader parser, SAXHandler contentHandler) throws JDOMException { + super.configureParser(parser, contentHandler); + try { + SecurityManager manager = new SecurityManager(); + manager.setEntityExpansionLimit(10000); + parser.setProperty(Constants.XERCES_PROPERTY_PREFIX + Constants.SECURITY_MANAGER_PROPERTY, manager); + } + catch (Exception ignore) { + } + } + }; saxBuilder.setEntityResolver(new EntityResolver() { @Override @NotNull diff --git a/platform/util/util.iml b/platform/util/util.iml index e5314d8d8076..c4fcb071f880 100644 --- a/platform/util/util.iml +++ b/platform/util/util.iml @@ -25,6 +25,7 @@ +