[ https://issues.apache.org/jira/browse/PDFBOX-808?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12906119#action_12906119 ]
Jukka Zitting commented on PDFBOX-808: -------------------------------------- You're right, that was some sloppy thinking by me. I was just looking at protecting against the "numberOfBytes-totalAmountRead" argument being zero, but of course even in such cases the second half of the AND condition would have broken the loop after one unnecessary read() call. It turns out that the problem was in the MemoryTTFDataStream class that would return 0 instead of -1 when the end of the stream is reached. That shouldn't normally be a problem given the way TTF files are parsed, but will cause the infinite loop when dealing with a truncated or otherwise malformed file. I fixed this problem in revision 992483, and made TTFDataStream.read(int) throw an IOException in case such an unexpected end of the TTF stream is encountered. You can get the latest snapshot jars from https://repository.apache.org/content/groups/snapshots-group/org/apache/pdfbox/. Our CI build will push a new version up there within an hour or so. > PDTrueTypeFont.loadTTF() freezes (at TTFDataStream.java:195) > ------------------------------------------------------------ > > Key: PDFBOX-808 > URL: https://issues.apache.org/jira/browse/PDFBOX-808 > Project: PDFBox > Issue Type: Bug > Components: FontBox > Affects Versions: 1.2.1 > Environment: PDFBox 1.2.1, JDK 1.6.0_21, Windows XP 32 Bit. > Reporter: Martin Hilpert > Assignee: Jukka Zitting > Priority: Critical > Fix For: 1.3.0 > > > Sometimes (not always), my app "freezes". When I look into jVisualVM thread > dump, I see this stack trace: > java.lang.Thread.State: RUNNABLE > at org.apache.fontbox.ttf.TTFDataStream.read(TTFDataStream.java:195) > at > org.apache.fontbox.ttf.TTFDataStream.readString(TTFDataStream.java:69) > at > org.apache.fontbox.ttf.TTFDataStream.readString(TTFDataStream.java:57) > at > org.apache.fontbox.ttf.PostScriptTable.initData(PostScriptTable.java:104) > at org.apache.fontbox.ttf.TTFParser.parseTTF(TTFParser.java:140) > at org.apache.fontbox.ttf.TTFParser.parseTTF(TTFParser.java:87) > at > org.apache.pdfbox.pdmodel.font.PDTrueTypeFont.loadDescriptorDictionary(PDTrueTypeFont.java:206) > at > org.apache.pdfbox.pdmodel.font.PDTrueTypeFont.loadTTF(PDTrueTypeFont.java:167) > at > org.apache.pdfbox.pdmodel.font.PDTrueTypeFont.loadTTF(PDTrueTypeFont.java:143) > at > org.apache.pdfbox.pdmodel.font.PDTrueTypeFont.loadTTF(PDTrueTypeFont.java:130) > It never returns and blocks the application from continuing. This hapend > several times now every few hours. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.