You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2018/11/08 17:23:43 UTC
svn commit: r1846174 -
/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/form/PDFormXObject.java
Author: tilman
Date: Thu Nov 8 17:23:42 2018
New Revision: 1846174
URL: http://svn.apache.org/viewvc?rev=1846174&view=rev
Log:
PDFBOX-4372: return empty resources if resource key does exist but doesn't contain a dictionary, to avoid stack overflow when form contains reference to form with its own name
Modified:
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/form/PDFormXObject.java
Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/form/PDFormXObject.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/form/PDFormXObject.java?rev=1846174&r1=1846173&r2=1846174&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/form/PDFormXObject.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/form/PDFormXObject.java Thu Nov 8 17:23:42 2018
@@ -153,11 +153,18 @@ public class PDFormXObject extends PDXOb
@Override
public PDResources getResources()
{
- COSDictionary resources = (COSDictionary) getCOSObject().getDictionaryObject(COSName.RESOURCES);
+ COSDictionary resources = getCOSObject().getCOSDictionary(COSName.RESOURCES);
if (resources != null)
{
return new PDResources(resources, cache);
}
+ if (getCOSObject().containsKey(COSName.RESOURCES))
+ {
+ // PDFBOX-4372 if the resource key exists but has nothing, return empty resources,
+ // to avoid a self-reference (xobject form Fm0 contains "/Fm0 Do")
+ // See also the mention of PDFBOX-1359 in PDFStreamEngine
+ return new PDResources();
+ }
return null;
}