Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
0.8.0-incubator
-
None
-
The problem occurs on certain corrupt streams. I have attached the file "corrupt-endless-loop-in-0.8.pdf" which is 447 bytes long and exhibits this problem. Not sure, but I think this file was originally longer and was somehow cut.
Description
The endless loop seems to have been introduced with the changes from 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 == '>')
+ }
+ 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 != '>')
+
+ if(read != -1)
+
+ }
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();