You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ad...@apache.org on 2010/11/19 23:42:38 UTC

svn commit: r1037069 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDNameTreeNode.java

Author: adam
Date: Fri Nov 19 22:42:38 2010
New Revision: 1037069

URL: http://svn.apache.org/viewvc?rev=1037069&view=rev
Log:
PDFBOX-891: Malformed document causes NPE in PDNameTreeNode.getValue
Patch courtesy of Kevin Jackson

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDNameTreeNode.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDNameTreeNode.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDNameTreeNode.java?rev=1037069&r1=1037068&r2=1037069&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDNameTreeNode.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDNameTreeNode.java Fri Nov 19 22:42:38 2010
@@ -23,6 +23,8 @@ import java.util.Collections;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 
 import org.apache.pdfbox.cos.COSArray;
 import org.apache.pdfbox.cos.COSBase;
@@ -39,6 +41,7 @@ import org.apache.pdfbox.cos.COSString;
  */
 public class PDNameTreeNode implements COSObjectable
 {
+    private static final Log log = LogFactory.getLog(PDNameTreeNode.class);
     private COSDictionary node;
     private Class valueType = null;
 
@@ -147,15 +150,22 @@ public class PDNameTreeNode implements C
         else
         {
             List kids = getKids();
-            for( int i=0; i<kids.size() && retval == null; i++ )
+            if (kids != null) 
             {
-                PDNameTreeNode childNode = (PDNameTreeNode)kids.get( i );
-                if( childNode.getLowerLimit().compareTo( name ) <= 0 &&
-                        childNode.getUpperLimit().compareTo( name ) >= 0 )
+                for( int i=0; i<kids.size() && retval == null; i++ )
                 {
-                    retval = childNode.getValue( name );
+                    PDNameTreeNode childNode = (PDNameTreeNode)kids.get( i );
+                    if( childNode.getLowerLimit().compareTo( name ) <= 0 &&
+                        childNode.getUpperLimit().compareTo( name ) >= 0 )
+                    {
+                        retval = childNode.getValue( name );
+                    }
                 }
             }
+            else
+            {
+                log.warn("NameTreeNode does not have \"names\" nor \"kids\" objects.");
+            }
         }
         return retval;
     }