Author: lehmi Date: Mon Jun 30 18:44:33 2014 New Revision: 1606860 URL: http://svn.apache.org/r1606860 Log: PDFBOX-1813: added new recursion check using an unique identifier
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDResources.java pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/form/PDFormXObject.java Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDResources.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDResources.java?rev=1606860&r1=1606859&r2=1606860&view=diff ============================================================================== --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDResources.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDResources.java Mon Jun 30 18:44:33 2014 @@ -26,6 +26,7 @@ import org.apache.commons.logging.LogFac import org.apache.pdfbox.cos.COSBase; import org.apache.pdfbox.cos.COSDictionary; import org.apache.pdfbox.cos.COSName; +import org.apache.pdfbox.cos.COSObject; import org.apache.pdfbox.pdmodel.common.COSDictionaryMap; import org.apache.pdfbox.pdmodel.common.COSObjectable; import org.apache.pdfbox.pdmodel.font.PDFont; @@ -251,8 +252,11 @@ public class PDResources implements COSO PDXObject xobject = null; try { - xobject = PDXObject.createXObject(dict.getDictionaryObject(objName), - objName.getName(), this); + String name = objName.getName() + "#"; + COSObject cosObject = (COSObject)dict.getItem(objName); + // add the object number to create an unique identifier + name += cosObject.getObjectNumber().intValue(); + xobject = PDXObject.createXObject(cosObject.getObject(), name, this); } catch (IOException exception) { Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/form/PDFormXObject.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/form/PDFormXObject.java?rev=1606860&r1=1606859&r2=1606860&view=diff ============================================================================== --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/form/PDFormXObject.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/form/PDFormXObject.java Mon Jun 30 18:44:33 2014 @@ -138,24 +138,14 @@ public final class PDFormXObject extends if (resources != null) { retval = new PDResources(resources); - // check for a recursion, see PDFBOX-1813 + // check for a possible recursion if (name != null) { Map<String, PDXObject> xobjects = retval.getXObjects(); if (xobjects != null && xobjects.containsKey(name)) { - PDXObject xobject = xobjects.get(name); - if (xobject instanceof PDFormXObject) - { - int length1 = getCOSStream().getInt(COSName.LENGTH); - int length2 = xobject.getCOSStream().getInt(COSName.LENGTH); - // seems to be the same object - if (length1 == length2) - { - retval.removeXObject(name); - LOG.debug("Removed XObjectForm "+name+" to avoid a recursion"); - } - } + retval.removeXObject(name); + LOG.debug("Removed XObjectForm "+name+" to avoid a recursion"); } } }