From ae4ac3e29b6a488b0bb517e322f3a22d2fa6109c Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Tue, 30 May 2017 13:38:23 +0300 Subject: [PATCH] IDEA-173468 XXE vulnerability of handling log.xml: Content of local file can be sent to remote se... --- .../src/com/intellij/idea/LoggerFactory.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/idea/LoggerFactory.java b/platform/platform-impl/src/com/intellij/idea/LoggerFactory.java index f116c5eae3c7..0d8b1d523c08 100644 --- a/platform/platform-impl/src/com/intellij/idea/LoggerFactory.java +++ b/platform/platform-impl/src/com/intellij/idea/LoggerFactory.java @@ -17,14 +17,17 @@ package com.intellij.idea; import com.intellij.openapi.application.PathManager; import com.intellij.openapi.diagnostic.Logger; +import com.intellij.openapi.util.JDOMUtil; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; import org.apache.log4j.LogManager; import org.apache.log4j.xml.DOMConfigurator; +import org.jdom.Document; +import org.jdom.output.DOMOutputter; import org.jetbrains.annotations.NotNull; +import org.w3c.dom.Element; import java.io.File; -import java.io.StringReader; @SuppressWarnings({"CallToPrintStackTrace", "UseOfSystemOutOrSystemErr"}) public class LoggerFactory implements Logger.Factory { @@ -67,7 +70,9 @@ public class LoggerFactory implements Logger.Factory { System.err.println("Cannot create log directory: " + file); } - new DOMConfigurator().doConfigure(new StringReader(text), LogManager.getLoggerRepository()); + Document document = JDOMUtil.loadDocument(text); + Element element = new DOMOutputter().output(document).getDocumentElement(); + new DOMConfigurator().doConfigure(element, LogManager.getLoggerRepository()); myInitialized = true; }