poi-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From n...@apache.org
Subject svn commit: r1782461 - /poi/trunk/src/java/org/apache/poi/poifs/property/PropertyTableBase.java
Date Fri, 10 Feb 2017 12:55:55 GMT
Author: nick
Date: Fri Feb 10 12:55:55 2017
New Revision: 1782461

URL: http://svn.apache.org/viewvc?rev=1782461&view=rev
Log:
If a property refers to an invalid index, log + ignore rather than failing with a IndexOutOfBoundsException

Modified:
    poi/trunk/src/java/org/apache/poi/poifs/property/PropertyTableBase.java

Modified: poi/trunk/src/java/org/apache/poi/poifs/property/PropertyTableBase.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/poifs/property/PropertyTableBase.java?rev=1782461&r1=1782460&r2=1782461&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/poifs/property/PropertyTableBase.java (original)
+++ poi/trunk/src/java/org/apache/poi/poifs/property/PropertyTableBase.java Fri Feb 10 12:55:55
2017
@@ -24,6 +24,8 @@ import java.util.Stack;
 
 import org.apache.poi.poifs.filesystem.BATManaged;
 import org.apache.poi.poifs.storage.HeaderBlock;
+import org.apache.poi.util.POILogFactory;
+import org.apache.poi.util.POILogger;
 
 /**
  * This class embodies the Property Table for the filesystem,
@@ -33,6 +35,9 @@ import org.apache.poi.poifs.storage.Head
  *  for the different block schemes as needed.
  */
 public abstract class PropertyTableBase implements BATManaged {
+    private static final POILogger _logger =
+            POILogFactory.getLogger(PropertyTableBase.class);
+    
     private   final HeaderBlock    _header_block;
     protected final List<Property> _properties;
 
@@ -123,17 +128,28 @@ public abstract class PropertyTableBase
                 populatePropertyTree(( DirectoryProperty ) property);
             }
             index = property.getPreviousChildIndex();
-            if (Property.isValidIndex(index))
+            if (isValidIndex(index))
             {
                 children.push(_properties.get(index));
             }
             index = property.getNextChildIndex();
-            if (Property.isValidIndex(index))
+            if (isValidIndex(index))
             {
                 children.push(_properties.get(index));
             }
         }
     }
+    
+    protected boolean isValidIndex(int index) {
+        if (! Property.isValidIndex(index))
+            return false;
+        if (index < 0 || index >= _properties.size()) {
+            _logger.log(POILogger.WARN, "Property index " + index +
+                        "outside the valid range 0.."+_properties.size());
+            return false;
+        }
+        return true;
+    }
 
     /**
      * Get the start block for the property table



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org


Mime
View raw message