Changeset 8287 in josm for trunk


Ignore:
Timestamp:
2015-04-28T01:11:18+02:00 (10 years ago)
Author:
Don-vip
Message:

fix findsecbugs:XXE_SAXPARSER - "Security - XML Parsing Vulnerable to XXE (SAXParser)"

Location:
trunk/src/org/openstreetmap/josm
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/download/PlaceSelection.java

    r8285 r8287  
    4646import javax.swing.table.TableCellRenderer;
    4747import javax.swing.table.TableColumn;
    48 import javax.xml.parsers.SAXParserFactory;
    4948
    5049import org.openstreetmap.josm.Main;
     
    380379                    InputSource inputSource = new InputSource(reader);
    381380                    NameFinderResultParser parser = new NameFinderResultParser();
    382                     SAXParserFactory.newInstance().newSAXParser().parse(inputSource, parser);
     381                    Utils.newSafeSAXParser().parse(inputSource, parser);
    383382                    this.data = parser.getResult();
    384383                }
  • trunk/src/org/openstreetmap/josm/io/Capabilities.java

    r7529 r8287  
    1212
    1313import javax.xml.parsers.ParserConfigurationException;
    14 import javax.xml.parsers.SAXParserFactory;
    1514
    1615import org.openstreetmap.josm.Main;
     16import org.openstreetmap.josm.tools.Utils;
    1717import org.xml.sax.Attributes;
    1818import org.xml.sax.InputSource;
     
    272272        public static Capabilities parse(InputSource inputSource) throws SAXException, IOException, ParserConfigurationException {
    273273            CapabilitiesParser parser = new CapabilitiesParser();
    274             SAXParserFactory.newInstance().newSAXParser().parse(inputSource, parser);
     274            Utils.newSafeSAXParser().parse(inputSource, parser);
    275275            return parser.getCapabilities();
    276276        }
  • trunk/src/org/openstreetmap/josm/io/DiffResultProcessor.java

    r7658 r8287  
    1414
    1515import javax.xml.parsers.ParserConfigurationException;
    16 import javax.xml.parsers.SAXParserFactory;
    1716
    1817import org.openstreetmap.josm.data.osm.Changeset;
     
    2524import org.openstreetmap.josm.gui.progress.ProgressMonitor;
    2625import org.openstreetmap.josm.tools.CheckParameterUtil;
     26import org.openstreetmap.josm.tools.Utils;
    2727import org.openstreetmap.josm.tools.XmlParsingException;
    2828import org.xml.sax.Attributes;
     
    8484            progressMonitor.beginTask(tr("Parsing response from server..."));
    8585            InputSource inputSource = new InputSource(new StringReader(diffUploadResponse));
    86             SAXParserFactory.newInstance().newSAXParser().parse(inputSource, new Parser());
     86            Utils.newSafeSAXParser().parse(inputSource, new Parser());
    8787        } catch(XmlParsingException e) {
    8888            throw e;
  • trunk/src/org/openstreetmap/josm/io/GpxReader.java

    r7801 r8287  
    1818
    1919import javax.xml.parsers.ParserConfigurationException;
    20 import javax.xml.parsers.SAXParserFactory;
    2120
    2221import org.openstreetmap.josm.Main;
     
    3029import org.openstreetmap.josm.data.gpx.ImmutableGpxTrack;
    3130import org.openstreetmap.josm.data.gpx.WayPoint;
     31import org.openstreetmap.josm.tools.Utils;
    3232import org.xml.sax.Attributes;
    3333import org.xml.sax.InputSource;
     
    542542        Parser parser = new Parser();
    543543        try {
    544             SAXParserFactory factory = SAXParserFactory.newInstance();
    545             factory.setNamespaceAware(true);
    546             factory.newSAXParser().parse(inputSource, parser);
     544            Utils.newSafeSAXParser().parse(inputSource, parser);
    547545            return true;
    548546        } catch (SAXException e) {
  • trunk/src/org/openstreetmap/josm/io/NoteReader.java

    r8285 r8287  
    1111
    1212import javax.xml.parsers.ParserConfigurationException;
    13 import javax.xml.parsers.SAXParserFactory;
    1413
    1514import org.openstreetmap.josm.Main;
     
    1918import org.openstreetmap.josm.data.notes.NoteComment.Action;
    2019import org.openstreetmap.josm.data.osm.User;
     20import org.openstreetmap.josm.tools.Utils;
    2121import org.openstreetmap.josm.tools.date.DateUtils;
    2222import org.xml.sax.Attributes;
     
    222222        DefaultHandler parser = new Parser();
    223223        try {
    224             SAXParserFactory factory = SAXParserFactory.newInstance();
    225             factory.setNamespaceAware(true);
    226             factory.newSAXParser().parse(inputSource, parser);
     224            Utils.newSafeSAXParser().parse(inputSource, parser);
    227225        } catch (ParserConfigurationException e) {
    228226            Main.error(e); // broken SAXException chaining
  • trunk/src/org/openstreetmap/josm/io/OsmChangesetContentParser.java

    r7801 r8287  
    1111
    1212import javax.xml.parsers.ParserConfigurationException;
    13 import javax.xml.parsers.SAXParserFactory;
    1413
    1514import org.openstreetmap.josm.Main;
     
    1918import org.openstreetmap.josm.gui.progress.ProgressMonitor;
    2019import org.openstreetmap.josm.tools.CheckParameterUtil;
     20import org.openstreetmap.josm.tools.Utils;
    2121import org.openstreetmap.josm.tools.XmlParsingException;
    2222import org.xml.sax.Attributes;
     
    150150            progressMonitor.beginTask("");
    151151            progressMonitor.indeterminateSubTask(tr("Parsing changeset content ..."));
    152             SAXParserFactory.newInstance().newSAXParser().parse(source, new Parser());
     152            Utils.newSafeSAXParser().parse(source, new Parser());
    153153        } catch(XmlParsingException e) {
    154154            throw e;
  • trunk/src/org/openstreetmap/josm/io/OsmChangesetParser.java

    r7704 r8287  
    1313
    1414import javax.xml.parsers.ParserConfigurationException;
    15 import javax.xml.parsers.SAXParserFactory;
    1615
    1716import org.openstreetmap.josm.data.coor.LatLon;
     
    2019import org.openstreetmap.josm.data.osm.User;
    2120import org.openstreetmap.josm.gui.progress.ProgressMonitor;
     21import org.openstreetmap.josm.tools.Utils;
    2222import org.openstreetmap.josm.tools.XmlParsingException;
    2323import org.openstreetmap.josm.tools.date.DateUtils;
     
    278278            progressMonitor.indeterminateSubTask(tr("Parsing list of changesets..."));
    279279            InputSource inputSource = new InputSource(new InvalidXmlCharacterFilter(new InputStreamReader(source, StandardCharsets.UTF_8)));
    280             SAXParserFactory.newInstance().newSAXParser().parse(inputSource, parser.new Parser());
     280            Utils.newSafeSAXParser().parse(inputSource, parser.new Parser());
    281281            return parser.getChangesets();
    282282        } catch(ParserConfigurationException | SAXException e) {
  • trunk/src/org/openstreetmap/josm/io/OsmHistoryReader.java

    r7082 r8287  
    1010
    1111import javax.xml.parsers.ParserConfigurationException;
    12 import javax.xml.parsers.SAXParserFactory;
    1312
    1413import org.openstreetmap.josm.Main;
     
    1817import org.openstreetmap.josm.gui.progress.ProgressMonitor;
    1918import org.openstreetmap.josm.tools.CheckParameterUtil;
     19import org.openstreetmap.josm.tools.Utils;
    2020import org.xml.sax.Attributes;
    2121import org.xml.sax.InputSource;
     
    8686        progressMonitor.beginTask(tr("Parsing OSM history data ..."));
    8787        try {
    88             SAXParserFactory.newInstance().newSAXParser().parse(inputSource, new Parser());
     88            Utils.newSafeSAXParser().parse(inputSource, new Parser());
    8989        } catch (ParserConfigurationException e) {
    9090            Main.error(e); // broken SAXException chaining
  • trunk/src/org/openstreetmap/josm/io/imagery/ImageryReader.java

    r8285 r8287  
    1111
    1212import javax.xml.parsers.ParserConfigurationException;
    13 import javax.xml.parsers.SAXParserFactory;
    1413
    1514import org.openstreetmap.josm.Main;
     
    2120import org.openstreetmap.josm.io.UTFInputStreamReader;
    2221import org.openstreetmap.josm.tools.LanguageInfo;
     22import org.openstreetmap.josm.tools.Utils;
    2323import org.xml.sax.Attributes;
    2424import org.xml.sax.InputSource;
     
    4949        Parser parser = new Parser();
    5050        try {
    51             SAXParserFactory factory = SAXParserFactory.newInstance();
    52             factory.setNamespaceAware(true);
    5351            try (InputStream in = new CachedFile(source)
    5452                    .setMaxAge(1*CachedFile.DAYS)
     
    5654                    .getInputStream()) {
    5755                InputSource is = new InputSource(UTFInputStreamReader.create(in));
    58                 factory.newSAXParser().parse(is, parser);
     56                Utils.newSafeSAXParser().parse(is, parser);
    5957                return parser.entries;
    6058            }
  • trunk/src/org/openstreetmap/josm/tools/Utils.java

    r7894 r8287  
    5050import java.util.zip.ZipInputStream;
    5151
     52import javax.xml.XMLConstants;
     53import javax.xml.parsers.ParserConfigurationException;
     54import javax.xml.parsers.SAXParser;
     55import javax.xml.parsers.SAXParserFactory;
     56
    5257import org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream;
    5358import org.openstreetmap.josm.Main;
    5459import org.openstreetmap.josm.data.Version;
     60import org.xml.sax.SAXException;
    5561
    5662/**
     
    11641170        return null;
    11651171    }
     1172
     1173    /**
     1174     * Returns a new secure SAX parser, supporting XML namespaces.
     1175     * @return a new secure SAX parser, supporting XML namespaces
     1176     * @throws ParserConfigurationException if a parser cannot be created which satisfies the requested configuration.
     1177     * @throws SAXException for SAX errors.
     1178     * @since 8287
     1179     */
     1180    public static SAXParser newSafeSAXParser() throws ParserConfigurationException, SAXException {
     1181        SAXParserFactory parserFactory = SAXParserFactory.newInstance();
     1182        parserFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
     1183        parserFactory.setNamespaceAware(true);
     1184        return parserFactory.newSAXParser();
     1185    }
    11661186}
  • trunk/src/org/openstreetmap/josm/tools/XmlObjectParser.java

    r8285 r8287  
    2020import javax.xml.XMLConstants;
    2121import javax.xml.parsers.ParserConfigurationException;
    22 import javax.xml.parsers.SAXParser;
    23 import javax.xml.parsers.SAXParserFactory;
    2422import javax.xml.transform.stream.StreamSource;
    2523import javax.xml.validation.Schema;
     
    250248    private Iterable<Object> start(final Reader in, final ContentHandler contentHandler) throws SAXException, IOException {
    251249        try {
    252             SAXParserFactory parserFactory = SAXParserFactory.newInstance();
    253             parserFactory.setNamespaceAware(true);
    254             SAXParser saxParser = parserFactory.newSAXParser();
    255             XMLReader reader = saxParser.getXMLReader();
     250            XMLReader reader = Utils.newSafeSAXParser().getXMLReader();
    256251            reader.setContentHandler(contentHandler);
    257252            try {
Note: See TracChangeset for help on using the changeset viewer.