If a property refers to an invalid index, log + ignore rather than failing with a IndexOutOfBoundsException
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1782461 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
16a825ccf5
commit
b6480adb9f
@ -24,6 +24,8 @@ import java.util.Stack;
|
|||||||
|
|
||||||
import org.apache.poi.poifs.filesystem.BATManaged;
|
import org.apache.poi.poifs.filesystem.BATManaged;
|
||||||
import org.apache.poi.poifs.storage.HeaderBlock;
|
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,
|
* This class embodies the Property Table for the filesystem,
|
||||||
@ -33,6 +35,9 @@ import org.apache.poi.poifs.storage.HeaderBlock;
|
|||||||
* for the different block schemes as needed.
|
* for the different block schemes as needed.
|
||||||
*/
|
*/
|
||||||
public abstract class PropertyTableBase implements BATManaged {
|
public abstract class PropertyTableBase implements BATManaged {
|
||||||
|
private static final POILogger _logger =
|
||||||
|
POILogFactory.getLogger(PropertyTableBase.class);
|
||||||
|
|
||||||
private final HeaderBlock _header_block;
|
private final HeaderBlock _header_block;
|
||||||
protected final List<Property> _properties;
|
protected final List<Property> _properties;
|
||||||
|
|
||||||
@ -123,18 +128,29 @@ public abstract class PropertyTableBase implements BATManaged {
|
|||||||
populatePropertyTree(( DirectoryProperty ) property);
|
populatePropertyTree(( DirectoryProperty ) property);
|
||||||
}
|
}
|
||||||
index = property.getPreviousChildIndex();
|
index = property.getPreviousChildIndex();
|
||||||
if (Property.isValidIndex(index))
|
if (isValidIndex(index))
|
||||||
{
|
{
|
||||||
children.push(_properties.get(index));
|
children.push(_properties.get(index));
|
||||||
}
|
}
|
||||||
index = property.getNextChildIndex();
|
index = property.getNextChildIndex();
|
||||||
if (Property.isValidIndex(index))
|
if (isValidIndex(index))
|
||||||
{
|
{
|
||||||
children.push(_properties.get(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
|
* Get the start block for the property table
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user