You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by tp...@apache.org on 2015/03/04 22:41:44 UTC

svn commit: r1664157 - in /tika/trunk: CHANGES.txt tika-parsers/src/main/java/org/apache/tika/parser/pdf/PDFParser.java

Author: tpalsulich
Date: Wed Mar  4 21:41:44 2015
New Revision: 1664157

URL: http://svn.apache.org/r1664157
Log:
TIKA-1038. Fix possible infinite recursion while parsing some PDFs.

Modified:
    tika/trunk/CHANGES.txt
    tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/pdf/PDFParser.java

Modified: tika/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/tika/trunk/CHANGES.txt?rev=1664157&r1=1664156&r2=1664157&view=diff
==============================================================================
--- tika/trunk/CHANGES.txt (original)
+++ tika/trunk/CHANGES.txt Wed Mar  4 21:41:44 2015
@@ -1,5 +1,7 @@
 Release 1.8 - Current Development
 
+  * Fixed infinite recursion while parsing some PDFs (TIKA-1038).
+
   * XHTMLContentHandler now properly passes along body attributes,
     contributed by Markus Jelsma (TIKA-995).
 

Modified: tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/pdf/PDFParser.java
URL: http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/pdf/PDFParser.java?rev=1664157&r1=1664156&r2=1664157&view=diff
==============================================================================
--- tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/pdf/PDFParser.java (original)
+++ tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/pdf/PDFParser.java Wed Mar  4 21:41:44 2015
@@ -473,7 +473,10 @@ public class PDFParser extends AbstractP
             }
         } else if(value instanceof COSString) {
             addMetadata(metadata, name, ((COSString)value).getString());
-        } else if (value != null) {
+        }
+        // Avoid calling COSDictionary#toString, since it can lead to infinite
+        // recursion. See TIKA-1038 and PDFBOX-1835.
+        else if (value != null && !(value instanceof COSDictionary)) {
             addMetadata(metadata, name, value.toString());
         }
     }