From 51acceca4808afbbee8f987b6dd41e370381eb1a Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Mon, 11 May 2015 20:00:42 +0000 Subject: [PATCH] Provide better exception if we would access out of bounds in arraycopy for Escher properties git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1678812 13f79535-47bb-0310-9956-ffa450edef68 --- src/java/org/apache/poi/ddf/EscherPropertyFactory.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/java/org/apache/poi/ddf/EscherPropertyFactory.java b/src/java/org/apache/poi/ddf/EscherPropertyFactory.java index 3dcce79b86..3e653f5b8d 100644 --- a/src/java/org/apache/poi/ddf/EscherPropertyFactory.java +++ b/src/java/org/apache/poi/ddf/EscherPropertyFactory.java @@ -82,7 +82,14 @@ public final class EscherPropertyFactory { pos += ((EscherArrayProperty)p).setArrayData(data, pos); } else { byte[] complexData = ((EscherComplexProperty)p).getComplexData(); - System.arraycopy(data, pos, complexData, 0, complexData.length); + + int leftover = data.length-pos; + if(leftover < complexData.length){ + throw new IllegalStateException("Could not read complex escher property, lenght was " + complexData.length + ", but had only " + + leftover + " bytes left"); + } + + System.arraycopy(data, pos, complexData, 0, complexData.length); pos += complexData.length; } }