This fixes/prevents an exception while parsing dvb.fontidex files with an unresolvable dtd file. For example:
<?xml version="1.0"?> <!DOCTYPE fontdirectory PUBLIC "-//DVB//DTD Font Directory 1.0//EN" " http://www.dvb.org/mhp/dtd/fontdirectory-1-0.dtd"> <fontdirectory> <font> <name>Miramonte</name> <fontformat>OTF</fontformat> <filename>00000.otf</filename> <style>BOLD</style> </font> <font> <name>MS Gothic</name> <fontformat>OTF</fontformat> <filename>00001.otf</filename> <style>PLAIN</style> </font> </fontdirectory> Reference: https://stackoverflow.com/questions/1185519/how-to-read-well-formed-xml-in-java-but-skip-the-schema I'm not sure if a "blacklist" approach is good, so comments welcome... >From a248a991aebfed760ab06ebddf9e2ed5d6501819 Mon Sep 17 00:00:00 2001 From: ace20022 <[email protected]> Date: Thu, 6 Nov 2014 23:17:56 +0100 Subject: [PATCH 1/1] FontIndex: Fix parsing dvb.fontidex files with unreachable dtd file definition. --- src/libbluray/bdj/java/org/videolan/FontIndex.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/libbluray/bdj/java/org/videolan/FontIndex.java b/src/libbluray/bdj/java/org/videolan/FontIndex.java index 9eb856f..fcdca35 100644 --- a/src/libbluray/bdj/java/org/videolan/FontIndex.java +++ b/src/libbluray/bdj/java/org/videolan/FontIndex.java @@ -22,15 +22,19 @@ package org.videolan; import java.awt.Font; import java.io.FileInputStream; import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.StringReader; import java.util.ArrayList; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes; +import org.xml.sax.EntityResolver; +import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; -public class FontIndex extends DefaultHandler { +public class FontIndex extends DefaultHandler implements EntityResolver{ public static FontIndexData[] parseIndex(String path) { return new FontIndex(path).getFontIndexData(); } @@ -60,6 +64,15 @@ public class FontIndex extends DefaultHandler { return (FontIndexData[])fontDatas.toArray(new FontIndexData[fontDatas.size()]); } + public InputSource resolveEntity(String publicId, String systemId) + throws SAXException, IOException { + if (systemId.contains(" http://www.dvb.org/mhp/dtd/fontdirectory-1-0.dtd")) { + return new InputSource(new StringReader("")); + } else { + return null; + } + } + public void startElement (String uri, String localName, String qName, Attributes attributes) throws SAXException { if (qName.equalsIgnoreCase("fontdirectory")) { -- 1.9.2.msysgit.0
0001-FontIndex-Fix-parsing-dvd.fontidex-files-with-unreac.patch
Description: Binary data
_______________________________________________ libbluray-devel mailing list [email protected] https://mailman.videolan.org/listinfo/libbluray-devel
