Bug#971869: buster-pu: package freecol/0.11.6+dfsg2-2+deb10u1
Package: release.debian.org
Severity: normal
Tags: buster
User: release.debian.org@packages.debian.org
Usertags: pu
X-Debbugs-Cc: apo@debian.org
Low severity bugfix for freecol, which doesn't warrant a DSA.
The (identical) patch has been in unstable for half a year, also
doublechecked by playing for half an hour :-)
Cheers,
Moritz
diff -Nru freecol-0.11.6+dfsg2/debian/changelog freecol-0.11.6+dfsg2/debian/changelog
--- freecol-0.11.6+dfsg2/debian/changelog 2018-08-31 19:22:57.000000000 +0200
+++ freecol-0.11.6+dfsg2/debian/changelog 2020-10-07 22:20:46.000000000 +0200
@@ -1,3 +1,9 @@
+freecol (0.11.6+dfsg2-2+deb10u1) buster; urgency=medium
+
+ * CVE-2018-1000825 (Closes: #917023)
+
+ -- Moritz Mühlenhoff <jmm@debian.org> Wed, 07 Oct 2020 22:20:46 +0200
+
freecol (0.11.6+dfsg2-2) unstable; urgency=medium
* Declare compliance with Debian Policy 4.2.1.
diff -Nru freecol-0.11.6+dfsg2/debian/patches/CVE-2018-1000825.patch freecol-0.11.6+dfsg2/debian/patches/CVE-2018-1000825.patch
--- freecol-0.11.6+dfsg2/debian/patches/CVE-2018-1000825.patch 1970-01-01 01:00:00.000000000 +0100
+++ freecol-0.11.6+dfsg2/debian/patches/CVE-2018-1000825.patch 2020-10-07 22:20:40.000000000 +0200
@@ -0,0 +1,142 @@
+From: Markus Koschany <apo@debian.org>
+Date: Mon, 24 Feb 2020 12:33:58 +0100
+Subject: CVE-2018-1000825
+
+Bug-Debian: https://bugs.debian.org/917023
+Origin: https://github.com/FreeCol/freecol/commit/8963506897e3270a75b062f28486934bcb79b1e3
+---
+ src/net/sf/freecol/common/io/FreeColXMLReader.java | 19 +++++++++++++++++--
+ src/net/sf/freecol/common/model/FreeColObject.java | 3 +++
+ src/net/sf/freecol/common/networking/Connection.java | 3 +++
+ src/net/sf/freecol/common/networking/DOMMessage.java | 3 +++
+ src/net/sf/freecol/tools/GenerateDocumentation.java | 3 +++
+ 5 files changed, 29 insertions(+), 2 deletions(-)
+
+diff --git a/src/net/sf/freecol/common/io/FreeColXMLReader.java b/src/net/sf/freecol/common/io/FreeColXMLReader.java
+index dd78a40..abbaba6 100644
+--- a/src/net/sf/freecol/common/io/FreeColXMLReader.java
++++ b/src/net/sf/freecol/common/io/FreeColXMLReader.java
+@@ -88,7 +88,7 @@ public class FreeColXMLReader extends StreamReaderDelegate
+ super();
+
+ try {
+- XMLInputFactory xif = XMLInputFactory.newInstance();
++ XMLInputFactory xif = newXMLInputFactory();
+ setParent(xif.createXMLStreamReader(inputStream, "UTF-8"));
+ } catch (XMLStreamException e) {
+ throw new IOException(e);
+@@ -109,7 +109,7 @@ public class FreeColXMLReader extends StreamReaderDelegate
+ super();
+
+ try {
+- XMLInputFactory xif = XMLInputFactory.newInstance();
++ XMLInputFactory xif = newXMLInputFactory();
+ setParent(xif.createXMLStreamReader(reader));
+ } catch (XMLStreamException e) {
+ throw new IOException(e);
+@@ -118,6 +118,21 @@ public class FreeColXMLReader extends StreamReaderDelegate
+ this.readScope = ReadScope.NORMAL;
+ }
+
++ /**
++ * Create a new XMLInputFactory.
++ *
++ * Respond to CVE 2018-1000825.
++ *
++ * @return A new <code>XMLInputFactory</code>.
++ */
++ private static XMLInputFactory newXMLInputFactory() {
++ XMLInputFactory xif = XMLInputFactory.newInstance();
++ // This disables DTDs entirely for that factory
++ xif.setProperty(XMLInputFactory.SUPPORT_DTD, false);
++ // disable external entities
++ xif.setProperty("javax.xml.stream.isSupportingExternalEntities", false);
++ return xif;
++ }
+
+ /**
+ * Should reads from this stream intern their objects into the
+diff --git a/src/net/sf/freecol/common/model/FreeColObject.java b/src/net/sf/freecol/common/model/FreeColObject.java
+index 01c9887..d8f3754 100644
+--- a/src/net/sf/freecol/common/model/FreeColObject.java
++++ b/src/net/sf/freecol/common/model/FreeColObject.java
+@@ -49,6 +49,7 @@ import javax.xml.transform.TransformerException;
+ import javax.xml.transform.TransformerFactory;
+ import javax.xml.transform.dom.DOMSource;
+ import javax.xml.transform.stream.StreamResult;
++import javax.xml.XMLConstants;
+
+ import net.sf.freecol.common.ObjectWithId;
+ import net.sf.freecol.common.io.FreeColXMLReader;
+@@ -895,6 +896,8 @@ public abstract class FreeColObject
+ public void readFromXMLElement(Element element) {
+ try {
+ TransformerFactory factory = TransformerFactory.newInstance();
++ factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
++ factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, "");
+ Transformer xmlTransformer = factory.newTransformer();
+ StringWriter stringWriter = new StringWriter();
+ xmlTransformer.transform(new DOMSource(element),
+diff --git a/src/net/sf/freecol/common/networking/Connection.java b/src/net/sf/freecol/common/networking/Connection.java
+index f88d2ed..48954bd 100644
+--- a/src/net/sf/freecol/common/networking/Connection.java
++++ b/src/net/sf/freecol/common/networking/Connection.java
+@@ -40,6 +40,7 @@ import javax.xml.transform.TransformerException;
+ import javax.xml.transform.TransformerFactory;
+ import javax.xml.transform.dom.DOMSource;
+ import javax.xml.transform.stream.StreamResult;
++import javax.xml.XMLConstants;
+
+ import net.sf.freecol.common.FreeColException;
+ import net.sf.freecol.common.debug.FreeColDebugger;
+@@ -101,6 +102,8 @@ public class Connection implements Closeable {
+ Transformer myTransformer = null;
+ try {
+ TransformerFactory factory = TransformerFactory.newInstance();
++ factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
++ factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, "");
+ myTransformer = factory.newTransformer();
+ myTransformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION,
+ "yes");
+diff --git a/src/net/sf/freecol/common/networking/DOMMessage.java b/src/net/sf/freecol/common/networking/DOMMessage.java
+index 7181a7d..8fe7295 100644
+--- a/src/net/sf/freecol/common/networking/DOMMessage.java
++++ b/src/net/sf/freecol/common/networking/DOMMessage.java
+@@ -37,6 +37,7 @@ import javax.xml.transform.TransformerException;
+ import javax.xml.transform.TransformerFactory;
+ import javax.xml.transform.dom.DOMSource;
+ import javax.xml.transform.stream.StreamResult;
++import javax.xml.XMLConstants;
+
+ import net.sf.freecol.common.io.FreeColXMLWriter;
+ import net.sf.freecol.common.debug.FreeColDebugger;
+@@ -448,6 +449,8 @@ public class DOMMessage {
+ public static String elementToString(Element element) {
+ try {
+ TransformerFactory factory = TransformerFactory.newInstance();
++ factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
++ factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, "");
+ Transformer xt = factory.newTransformer();
+ StringWriter sw = new StringWriter();
+ xt.transform(new DOMSource(element), new StreamResult(sw));
+diff --git a/src/net/sf/freecol/tools/GenerateDocumentation.java b/src/net/sf/freecol/tools/GenerateDocumentation.java
+index aac0f55..a52cf5b 100644
+--- a/src/net/sf/freecol/tools/GenerateDocumentation.java
++++ b/src/net/sf/freecol/tools/GenerateDocumentation.java
+@@ -35,6 +35,7 @@ import javax.xml.transform.Source;
+ import javax.xml.transform.Transformer;
+ import javax.xml.transform.TransformerException;
+ import javax.xml.transform.TransformerFactory;
++import javax.xml.XMLConstants;
+
+ import net.sf.freecol.common.i18n.Messages;
+ import net.sf.freecol.common.model.StringTemplate;
+@@ -192,6 +193,8 @@ public class GenerateDocumentation {
+ Messages.loadMessageBundle(Messages.getLocale(languageCode));
+ try {
+ TransformerFactory factory = TransformerFactory.newInstance();
++ factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
++ factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, "");
+ Source xsl = new StreamSource(new File("doc", XSL));
+ Transformer stylesheet;
+ try {
diff -Nru freecol-0.11.6+dfsg2/debian/patches/series freecol-0.11.6+dfsg2/debian/patches/series
--- freecol-0.11.6+dfsg2/debian/patches/series 2018-08-31 19:22:57.000000000 +0200
+++ freecol-0.11.6+dfsg2/debian/patches/series 2020-10-07 22:20:40.000000000 +0200
@@ -1,2 +1,3 @@
commons-cli-1.3.patch
valid-appdata.patch
+CVE-2018-1000825.patch
Reply to: