Endless loop in org.apache.pdfbox.pdfparser.BaseParser.parseCOSDictionary() on certain corrupt PDF streams ----------------------------------------------------------------------------------------------------------
Key: PDFBOX-537 URL: https://issues.apache.org/jira/browse/PDFBOX-537 Project: PDFBox Issue Type: Bug Components: Parsing Affects Versions: 0.8.0-incubator Environment: The problem occurs on certain corrupt streams. I have a file which is 417 bytes long and has this problem. I don't see a way to attach the file here. Let me know how I can do so or who do I send it to. I would think it's a good idea to add this file to the SVN repository and maybe create a test case for it, unless there is a test case that already checks a folder with thest files. Reporter: Hacho The issue seems to have been introduced on 01-Sep-2009 in svn revision 810122 with the addition of the loop to wait for a valid dictionary Index: PDFBox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java =================================================================== --- PDFBox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java (revision 793364) +++ PDFBox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java (revision 810122) @@ -183,7 +183,23 @@ if( c == '>') { done = true; - } + } + else + if(c != '/') + { + //an invalid dictionary, we are expecting + //the key, read until we can recover + logger().warning("Invalid dictionary, found:" + (char)c + " but expected:\''"); + int read = pdfSource.read(); + while(read != -1 && read != '/' && read != '>') + { + read = pdfSource.read(); + } + if(read != -1) + { + pdfSource.unread(read); + } + } else { COSName key = parseCOSName(); @@ -206,9 +222,12 @@ if( value == null ) { - throw new IOException("Bad Dictionary Declaration " + pdfSource ); + logger().warning("Bad Dictionary Declaration " + pdfSource ); } - obj.setItem( key, value ); + else + { + obj.setItem( key, value ); + } } } char ch = (char)pdfSource.read(); -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.